linux两个线程交替打印数字

来源:互联网 发布:汉王小龙女手写板软件 编辑:程序博客网 时间:2024/05/18 06:16
#include<stdio.h>#include<unistd.h>#include<stdlib.h>#include<pthread.h>#define COUNT 10static  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 9void* 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 10void* funA(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, A_fun, NULL);    pthread_create(&tid2, NULL, B_fun, NULL);    pthread_join(tid1, NULL);    pthread_join(tid2, NULL);    return 0;}
原创粉丝点击