Предполагая, что у меня есть программа C с 3 POSIX потоков, разделяя глобальную переменную, семафор, и переменной условия, два из которых выполняются следующие psuedocode:Гарантированный приносит с 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