笔记3 linux 多线程 条件变量+互斥锁
2015-09-25 16:24 夏洛克·福尔摩斯 阅读(249) 评论(0) 编辑 收藏 举报//cond lock #include<stdio.h> #include<unistd.h> #include<pthread.h> struct test { char a[10]; char b[10]; char c[10]; }yb = {"111","222","33333"}; static int j=0; pthread_mutex_t mutex_1 = PTHREAD_MUTEX_INITIALIZER;; pthread_cond_t cond_1; void Print1(struct test *arg) { while(1) { pthread_mutex_lock(&mutex_1); pthread_cond_wait(&cond_1,&mutex_1); //等待满足某些要求的消息到达 printf("a=%s,b=%s,c=%s,d=%X,j=%d\n",arg->a,arg->b,arg->c,pthread_self(),j++); pthread_mutex_unlock(&mutex_1); pthread_exit((void *)j); } printf("Never Coming.\n"); } void Print2(void *arg1) { pthread_mutex_lock(&mutex_1); printf("coming.\n"); pthread_mutex_unlock(&mutex_1); pthread_cond_signal(&cond_1); } int main() { pthread_t pid1,pid2,pid3,pid4; void *set; pthread_cond_init(&cond_1,NULL); pthread_create(&pid1,NULL,&Print1,&yb); pthread_create(&pid2,NULL,&Print2,&yb); pthread_create(&pid3,NULL,&Print1,&yb); pthread_create(&pid4,NULL,&Print2,&yb); pthread_join(pid1,&set); printf("pid1 exit coed %d\n",(int)set); pthread_join(pid2,&set); printf("pid2 exit coed %d\n",(int)set); pthread_join(pid3,&set); printf("pid3 exit coed %d\n",(int)set); pthread_join(pid4,&set); printf("pid4 exit coed %d\n",(int)set); sleep(1); pthread_cond_destroy(&cond_1); return 0; }
技术成就现在,眼光着看未来。