#include <stdio.h>
#include <fcntl.h>
#include <string.h>
#include <unistd.h>
#include<signal.h>
#include<sys/types.h>
#include<pthread.h>
#include<stdlib.h>
pthread_mutex_t mutex;
pthread_cond_t cond;
void* func1(void* arg)
{
pthread_mutex_lock(&mutex);
printf("func1\n");
pthread_mutex_unlock(&mutex);
}
void* func2(void* arg)
{
sleep(1);
printf("func2\n");
pthread_cond_signal(&cond);
}
int main()
{
pthread_mutex_init(&mutex,NULL);
pthread_cond_init(&cond,NULL);
pthread_mutex_lock(&mutex);
pthread_t pd1,pd2;
pthread_create(&pd1,NULL,func1,NULL);
pthread_create(&pd2,NULL,func2,NULL);
printf("main1\n");
pthread_cond_wait(&cond,&mutex);
printf("main2\n");
pthread_join(pd1,NULL);
pthread_join(pd2,NULL);
pthread_mutex_destroy(&mutex);
pthread_cond_destroy(&cond);
return 0;
}
pthread_cond_signal唤醒的不仅仅是pthrad_cond_wait阻塞的线程,同样也会唤醒阻塞在pthread_mutex_lock的线程
版权声明:本文为qq_40794602原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。