#include<fcntl.h>
pthread_cond_t wakeup_cond;
pthread_mutex_t tlock;
pthread_t tid1;
pthread_t tid2;int a =100;staticvoid*smr_thread_handler(void*arg){printf("my name is :pthread_self():%d\n",pthread_self());while(1){pthread_mutex_lock(&tlock);if(a !=200){printf("thread wait:%d\n",pthread_self());pthread_cond_wait(&wakeup_cond,&tlock);printf("thread exit:%d\n",pthread_self());pthread_mutex_unlock(&tlock);pthread_exit(NULL);}pthread_mutex_unlock(&tlock);}}intmain(){int i =0;int ret;pthread_cond_init(&wakeup_cond,NULL);pthread_mutex_init(&tlock,NULL);
ret =pthread_create(&tid1,NULL,&smr_thread_handler,NULL);if(0!= ret){printf("pthread_create 1 success\n");return-1;}
ret =pthread_create(&tid2,NULL,&smr_thread_handler,NULL);if(0!= ret){printf("pthread_create 2 success\n");return-1;}while(1){if(i++==10){
a =200;printf("main set broad caset\n");pthread_cond_broadcast(&wakeup_cond);}printf("main wait\n");sleep(1);}}