pthread_cond_wait()的疑惑?
最近有工作需要,要写个多线程,实现同步,但是看了很多网络的释义不是很理解,觉得解释不通:
如下:
pthread_mutex_t mutex;
pthread_cond_t cond;
void *thread_A(void *prm)
{
pthread_mutex_lock(&mutex); //lock (1) 第一步
pthread_cond_wait(&cond); //第二步阻塞 block-->unlock(0)-->wait() 第五步return-->lock(2??)!!这里第三步已经做过加锁了,还可以加锁?
pthread_mutex_unlock(&mutex) // 第六步 unlock
// process something...
....
}
void * thread_B(void *prm)
{
pthread_mutex_lock(&mutex); //lock(1) 第三步
pthread_cond_signal(&cond); // 第四步 signal trigger pthread_cond_wait to exit wait()
pthread_mutex_unlock(&mutex)//第七步unlock
}
从第一步至第五步,第五步做了什么?