linux两个线程交替打印数字
2017-12-10 19:06
387 查看
#include<stdio.h> #include<unistd.h> #include<stdlib.h> #include<pthread.h> #define COUNT 10 static int i = 1; pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; pthread_cond_t even = PTHREAD_COND_INITIALIZER; pthread_cond_t uneven = PTHREAD_COND_INITIALIZER; //1 3 5 7 9 void* funA(void *arg) { while(i <= COUNT) { pthread_mutex_lock(&mutex); if(i % 2 != 0) { printf("funA : %d\n",i); ++i; pthread_cond_signal(&uneven); } else pthread_cond_wait(&even, &mutex); pthread_mutex_unlock(&mutex); } } //2 4 6 8 10 void* funB(void *arg) { while(i <= COUNT) { pthread_mutex_lock(&mutex); if(i % 2 == 0) { printf("funB : %d\n",i); ++i; pthread_cond_signal(&even); } else pthread_cond_wait(&uneven, &mutex); pthread_mutex_unlock(&mutex); } } int main() { pthread_t tid1, tid2; pthread_create(&tid1, NULL, funA, NULL); pthread_create(&tid2, NULL, funB, NULL); pthread_join(tid1, NULL); pthread_join(tid2, NULL); return 0; }
相关文章推荐
- 面试题一:实现两个线程交替打印数字
- 两个线程交替打印ABCDEF
- 2.使用线程实现数字与代码的交替打印
- Java两个线程交替打印(实现Runnable接口)
- 2个线程交替打印100以内的数字
- 两线程交替打印数字
- 面试题之开两个线程交替输出数字
- 使用两个线程交替打印0到100的奇数和偶数
- 两个线程交替执行,一个打印1-52;一个打印A-Z;打印顺序为12A34B56C.....5152Z
- 使用Java线程并发库实现两个线程交替打印的线程题
- 两线程交替打印数字
- Java实现两个线程交替打印问题
- 两个线程交替打印字母 java
- 两个线程交替打印ABABAB
- 多线程同步之事件 -- 2个线程交替打印数字
- 使用Java线程并发库实现两个线程交替打印的线程题
- 两个线程交替打印字符串
- 两个线程每隔一秒钟交替打印5个数
- 两个线程交替打印ABABAB
- 两个线程的交替打印