我觉得我不了解互斥和条件。如果我有一个线程在它开始操作之前等待条件,为什么另一个线程在发出条件让线程开始其操作之前锁定互斥锁?我知道如果我们设置一个另一个线程读取的变量,我们会在发出信号之前锁定互斥锁,但如果我们只使用互斥锁和条件告诉另一个线程何时停止“休眠”,我不明白为什么我们需要在发出条件信号之前锁定互斥锁
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
void thread1()
{
pthread_mutex_lock(&mutex);
for(;;)
{
pthread_cond_wait(&cond, &mutex);
// do stuff
pthread_mutex_lock(&mutex);
}
pthread_mutex_unlock(&mutex);
}
void mainthread()
{
// start thread1
for(;;)
{
// do stuff
// lock the mutex (why?)
pthread_cond_broadcast(&cond);
// unlock the mutex
}
}