lchjczwlchjczw.blog.chinaunix.net
lchjczw
全部博文(1008)
sysfs(0)
procfs(6)
Java(0)
Linux C(1)
C++(0)
C语言(0)
wifi驱动开发(0)
视频驱动开发(0)
音频驱动开发(2)
网络设备驱动开发(1)
驱动调试(0)
驱动基础(4)
sd卡驱动开发(1)
总线驱动(9)
flash驱动开发(0)
USB驱动开发(1)
2012年(1008)
Lanny_li
zsy77
cynthia
Bsolar
浪花小雨
fengchar
yxl15098
wangfeng
CHLRX
728196
Katherin
分类:
2012-08-01 11:34:47
原文地址:线程同步(条件变量) 作者:luozhiyong131
#include <stdio.h>#include <stdlib.h>#include <pthread.h>pthread_mutex_t mutex;pthread_cond_t cond;int x;void consumer(void){while(1){pthread_mutex_lock(&mutex);int i;while(x<3){pthread_cond_wait(&cond,&mutex);printf("start consumingn",x);}while(x>0){x--;printf("consuming x=%dn",x);sleep(1);}pthread_mutex_unlock(&mutex); }pthread_exit(NULL);}void producer(void){while(1){pthread_mutex_lock(&mutex);int i;for(i=0;i<3-x;i++){x++;printf("produing x=%dn",x);sleep(1);}if(x>=3){pthread_cond_signal(&cond);printf("producing completedn",x);}pthread_mutex_unlock(&mutex);sleep(1);}pthread_exit(NULL);}int main(void){pthread_t id1,id2;int ret;ret = pthread_mutex_init(&mutex,NULL);if(ret!=0){printf("pthread_mutex_init errorn");exit(1);}ret = pthread_cond_init(&cond,NULL);if(ret!=0){printf("pthread_cond_init errorn");exit(1);}ret = pthread_create(&id1,NULL,(void *)&producer,NULL);if(ret!=0){printf("pthread_create producer errorn");exit(1);}ret = pthread_create(&id2,NULL,(void *)&consumer,NULL);if(ret!=0){printf("pthread_create consumer errorn");exit(1);}pthread_join(id1,NULL);pthread_join(id2,NULL);return 0;}
上一篇:嵌入式软件发展趋势
下一篇:线程同步——信号量
登录 注册