得到假设我有3个POSIX线程一个C程序,共享的全局变量,互斥锁,和条件变量,其中两个是执行以下伪码:保证与调用pthread_cond_wait和调用pthread_cond_signal
...process data...
pthread_mutex_lock(&mutex);
variable = data_ptr;
pthread_cond_signal(&cond);
pthread_mutex_unlock(&mutex);
而第三个运行:
while(1) {
while(variable == NULL) {
pthread_mutex_wait(&cond, &mutex);
}
printf("Data is %d", *variable);
}
它是安全的假设,第三个线程会看到从每个前两个数据?
换一种方式,如果一个线程在互斥锁和条件变量上流水,可以安全地假设它是下一个获取锁的信号,而不是其他某个线程在等待锁?
哎呀,是的,它应该是pthread_cond_wait。 – Edward 2009-08-03 15:20:33