您的位置:首页 > 大数据 > 人工智能

pthread_cond_signal只能唤醒已经处于pthread_cond_wait的线程

2011-07-29 11:07 567 查看
也就是说,如果signal的时候没有线程在condition wait,那么本次signal就没有效果,后续的线程进入condition wait之后,无法被之前的signal唤醒。

测试代码:

#include <stdio.h>
#include <pthread.h>
#include <unistd.h>

pthread_cond_t cond;
pthread_mutex_t mutex;

void *test_thread(void *arg)
{
printf("Signal main thread...\n");
pthread_cond_signal(&cond);
return NULL;
}

int main()
{
pthread_t thread;

pthread_cond_init(&cond, NULL);
pthread_mutex_init(&mutex, NULL);

pthread_create(&thread, NULL, test_thread, NULL);

sleep(5);
pthread_mutex_lock(&mutex);
pthread_cond_wait(&cond, &mutex);

printf("Main thread signaled, quit...\n");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: