【发布时间】:2014-04-12 11:13:15
【问题描述】:
我试图了解 pthread_cond_broadcast() 的工作原理以及是否可以将线程“附加”到已被另一个线程阻塞的事件(广播信号)的等待列表(或队列)。
假设我们有两个线程。
线程 #1 处于等待循环中
pthread_mutex_lock();
while(condition_is_false)
pthread_cond_wait();
pthread_mutex_unlock();
在这个过程的中间某个地方,当线程 #1 已经阻塞时,另一个线程 #2 调用相同或几乎相同的代码,希望“附加”到同一个 condvar:
pthread_mutex_lock();
while(condition_is_false)
pthread_cond_wait(); or pthread_cond_timedwait()
pthread_mutex_unlock();
据我了解,线程 #2 在解锁之前无法访问由互斥锁锁定的代码。我说的对吗?
我正在尝试实施下一个案例:有些任务需要一段时间才能完成。在此期间,不允许另一个线程复制已经在进行中的相同任务,但要等到它完成。当任务最终完成时,所有线程必须得到相同的结果。
【问题讨论】:
标签: c multithreading pthreads