不同线程在同一个condvar上调用pthread_cond_wait()和pthread_cond_timedwait()是否正确?
我试图了解pthread_cond_broadcast()如何工作,以及是否可以将线程“附加”到已被另一个线程阻止的事件(广播信号)的等待列表(或队列) 假设我们有两个线程 等待循环中的线程#1不同线程在同一个condvar上调用pthread_cond_wait()和pthread_cond_timedwait()是否正确?,c,multithreading,pthreads,C,Multithreading,Pthreads,我试图了解pthread_cond_broadcast()如何工作,以及是否可以将线程“附加”到已被另一个线程阻止的事件(广播信号)的等待列表(或队列) 假设我们有两个线程 等待循环中的线程#1 pthread_mutex_lock(); while(condition_is_false) pthread_cond_wait(); pthread_mutex_unlock(); 以及在线程1已经被阻塞的过程中的某个地方,然后另一个线程2调用相同或几乎相同的代码,希望“附加”到同
pthread_mutex_lock();
while(condition_is_false)
pthread_cond_wait();
pthread_mutex_unlock();
以及在线程1已经被阻塞的过程中的某个地方,然后另一个线程2调用相同或几乎相同的代码,希望“附加”到同一个CODVAR:
pthread_mutex_lock();
while(condition_is_false)
pthread_cond_wait(); or pthread_cond_timedwait()
pthread_mutex_unlock();
据我所知,线程#2在解锁之前无法访问由互斥锁锁定的代码。我说得对吗
我正在尝试实现下一个案例:有些任务需要一段时间才能完成。在此期间,不允许另一个线程复制已在进行中的同一任务,而是等待该任务完成。当任务最终完成时,所有线程必须得到相同的结果。您的场景正是为其设计条件变量的场景 第二个线程实现互斥锁没有问题,因为wait(和派生)在wait期间临时释放互斥锁,并在返回时重新获取互斥锁
您应该详细阅读大量文档中有关互斥和条件变量的概念。谢谢。最后一个问题是混合使用pthread_cond_wait()和pthread_cond_timedwait()调用。在同一个condvar上使用不同的函数正确吗?@user3526517,当然,为什么不正确?