Tag: 互斥互斥

如何提供一系列交错线程来表明代码中断并且不能提供完美的同步?

我知道下面的代码做了什么,我知道为什么它是一个破碎的同步代码,因为它只有一个条件变量,而我们需要两个,但我不知道如何提供一个交错线程序列,以显示它不起作用。 你能说明为什么这段代码不适用于一个例子吗? 1 cond_t cond = PTHREAD_COND_INITIALIZER; 2 mutex_t mutex=PTHREAD_MUTEX_INITIALIZER;; 3 4 void *producer(void *arg) { 5 int i; 6 for (i = 0; i < loops; i++) { 7 Pthread_mutex_lock(&mutex); 8 while (count == 1) 9 Pthread_cond_wait(&cond, &mutex); 10 put(i); 11 Pthread_cond_signal(&cond); 12 Pthread_mutex_unlock(&mutex); 13 } 14 } 15 16 void *consumer(void *arg) { […]