得到假設我有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