我正在尝试实现pthread_cond_wait2个线程.我的测试代码试图使用两个线程来执行以下场景:
到目前为止,代码打印"Hello"五次然后卡住了.从我看到的例子来看,我似乎在正确的轨道上,"锁定互斥,等待,通过其他线程发出信号,解锁互斥,做东西,循环"
测试代码:
//Import
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>
//global variables
pthread_cond_t condA = PTHREAD_COND_INITIALIZER;
pthread_cond_t condB = PTHREAD_COND_INITIALIZER;
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
void *threadA()
{
int i = 0, rValue, loopNum;
while(i<5)
{
//unlock mutex
rValue = pthread_mutex_unlock(&mutex);
//do stuff
for(loopNum = 1; loopNum <= 5; loopNum++)
printf("Hello %d\n", loopNum);
//signal condition of thread b
rValue = pthread_cond_signal(&condB);
//lock mutex
rValue = pthread_mutex_lock(&mutex);
//wait for turn
while( …Run Code Online (Sandbox Code Playgroud)