【发布时间】:2011-12-29 06:13:55
【问题描述】:
让我们举个例子..
一些复杂的工作被4个线程分割
thread -A is calling function_A
thread -B is calling function_B
thread -C is calling function_C
thread -D is calling function_D
现在的条件是线程 A、B、C 可以同时工作,但是当线程 D 正在执行 function_D 时,它会看到来自 A、B、C 的任何线程是否正在那里执行函数?如果是,那么它将等待它们完成,当没有来自 a、b、c 的线程正在执行该函数时,线程 D 将开始执行函数 D。
我该怎么做?有什么好主意吗?
编辑:function_A,function_B,function_c 使用一个句柄。并且 function_D 正在关闭该句柄。当任何函数使用该句柄时,它不应该被 function_d 关闭。
【问题讨论】:
-
如果您想了解更多关于使用信号量的知识(除了使用下面的答案),您可能需要阅读“信号量小书”greenteapress.com/semaphores。
标签: c++ c linux multithreading operating-system