使多线程按顺序执行的一种方法
2014-04-25 14:02
267 查看
该程序使三个线程合作打印ABC。
#include <iostream> #include <pthread.h> using namespace std; int state[3]; int count = 0; void *thread_fun1(void *arg) { while(count < 10) { while(state[0] == 1) { state[0] = 0; cout << "A"; state[1] = 1; } } } void *thread_fun2(void *arg) { while(count < 10){ while(state[1] == 1) { state[1] = 0; cout << "B"; state[2] = 1; } } } void *thread_fun3(void *arg) { while(count < 10){ while(state[2] == 1) { state[2] = 0; cout << "C"<<endl; count++; state[0] = 1; } } } int main() { for(int i = 0;i<3;i++) state[i] = 0; state[0] = 1; pthread_t thread1; pthread_t thread2; pthread_t thread3; pthread_create(&thread1, NULL, thread_fun1, NULL); pthread_create(&thread2, NULL, thread_fun2, NULL); pthread_create(&thread3, NULL, thread_fun3, NULL); pthread_join(thread1, NULL); pthread_join(thread2, NULL); pthread_join(thread3, NULL); cout << "over!" << endl; return 0; }
结果如下
ABCABCABCABCABCABCABCABCABCABCover!
相关文章推荐
- Java 多线程 (PART VII) 使用join()方法保证线程的执行顺序
- 多线程,顺序执行(方法一)
- java 静态代码块和构造方法的执行先后顺序
- 【iOS】UITableView delegate/dataSource方法执行顺序
- 静态块,静态属性,成员变量,静态方法,构造函数执行顺序
- Java中“块”与构造方法的执行顺序
- Java构造方法的执行顺序
- JS是依照代码顺序执行的,而不是方法体
- Linux C 多线程执行顺序问题
- Java static属性和静态代码块和构造方法等的执行顺序探讨
- java 静态代码块 构造代码块 构造方法的执行顺序
- 静态代码块,静态方法,构造方法的执行顺序
- java继承中父类和子类静态、非静态代码块,构造函数,静态方法的执行顺序
- 项目中遇到的子类父类方法执行顺序
- 关于静态块、静态属性、构造块、构造方法的执行顺序
- 同一事件绑定不同的处理方法、执行顺序有所不同
- cocos2d场景转换的方法执行顺序
- Java静态代码块、构造代码块、构造方法的执行顺序
- 多线程执行顺序
- iOS UIView的方法及执行顺序