子线程循环 3 次,接着主线程循环 6 次,接着又回到子线程循环 3 次,接着再回到主线程又循环6 次,如此循环50次,试写出代码。
2016-12-04 22:25
363 查看
/***************************************************** copyright (C), 2014-2015, Lighting Studio. Co., Ltd. File name: Author:Jerey_Jobs Version:0.1 Date: Description: Funcion List: *****************************************************/ #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <pthread.h> #define LOOP 5 int num = 0; int parm_0 = 0; int parm_1 = 1; pthread_mutex_t mylock = PTHREAD_MUTEX_INITIALIZER; pthread_cond_t qready = PTHREAD_COND_INITIALIZER; void* thread_func(void *arg) { int i, j; for(i = 0; i < LOOP; i++) { pthread_mutex_lock(&mylock); while(parm_0 != num) pthread_cond_wait(&qready, &mylock); printf("thread: \n"); for(j = 0; j < 3; j++) printf(" %d ", j); printf("\n"); num = (num + 1) % 2; pthread_mutex_unlock(&mylock); pthread_cond_signal(&qready); } return (void*) 0; } int main() { int i, k; pthread_t tid; pthread_create(&tid, NULL, thread_func, NULL); for(i = 0; i < LOOP; i++) { pthread_mutex_lock(&mylock); while(parm_1 != num) pthread_cond_wait(&qready, &mylock); printf("main: \n"); for(k = 0; k < 6; k++) printf(" %d", k + 100); printf("\n"); num = (num + 1) % 2; pthread_mutex_unlock(&mylock); pthread_cond_signal(&qready); } pthread_join(tid, NULL); }
相关文章推荐
- Raspbian PIXEL不能播放flash视频的解决办法
- 代码整洁之道读书笔记(七)
- 线程池源代码解析
- 从活字印刷术的角度理解面向对象编程
- QT下实现ini文件读写
- 单链表的基本操作大全之C语言实现(二)
- C#夯实基础之接口(《CLR via C#》读书笔记)
- [置顶] Python+Django 复选框选择多个,但提交时只能保存一个的解决办法
- C++用纯字符串来处理高精度问题代码
- java文件及文件夹过滤器使用样例
- Java之路(四)数组初始化
- spring
- Java 常见内存溢出异常与代码实现
- 高通LCD 开机logo制作
- ASP.NET SignalR入门
- org.eclipse.wst.common.project.facet.core.xml
- Qt学习之路——— 串口通信总结
- java各技术思维导图
- matlab 工具函数 —— normalize(归一化数据)
- Java利用反射访问私有构造函数的例子