pthread_cond_broadcast问题
我的程序代码如下:
pthread_mutex_t mymutex1 = PTHREAD_MUTEX_INITIALIZER;
12 pthread_mutex_t mymutex2 = PTHREAD_MUTEX_INITIALIZER;
13 pthread_cond_t mycond = PTHREAD_COND_INITIALIZER;
14 void *mythread1(void *param)
15 {
16 pthread_mutex_lock(&mymutex1);
17 pthread_cond_wait(&mycond,&mymutex1);
18 fprintf(stderr,"this is mythread1.\n");
19 pthread_mutex_unlock(&mymutex1);
20 return NULL;
21 }
22 void *mythread2(void *param)
23 {
24 pthread_mutex_lock(&mymutex2);
25 pthread_cond_wait(&mycond,&mymutex2);
26 fprintf(stderr,"this is mythread2.\n");
27 pthread_mutex_unlock(&mymutex2);
28 return NULL;
29 }
30 int main(int argc,char* argv[],char *envp[])
31 {
32 int i;
33 pthread_t tid1,tid2;
34 pthread_create(&tid1,NULL,mythread1,NULL);
35 pthread_create(&tid2,NULL,mythread2,NULL);
36 getchar();
37 if(pthread_cond_broadcast(&mycond)){
38 printf("error\n");
39 return 1;
40 }
41 getchar();
42 printf("this is main thread.\n");
43 return 0;
44 }
结果只打印出了“this is mythread1”,为什么?