【发布时间】:2010-11-24 07:40:24
【问题描述】:
我正在实现一个线程池。每个线程所需的工作是 1-10 秒的 CPU,因此我很高兴拥有一个带有工作人员的传统线程池,或者我很高兴为每个工作单元生成一个新线程。没关系。
我想有一些方法让主控制线程知道 N 个工作线程中的一个何时完成其工作并准备好进行更多工作(或开始另一个工作线程的时间)。我看过 pthread_join 和 pthread_cond_wait。似乎没有办法等待 N 中的一个。所以我考虑让主线程有一个变量,用于进入睡眠状态并让工作人员唤醒它。如果工人不死,这似乎可行。但是,如果他们死了,在工作人员唤醒控制器的时间和我不想处理的时间之间有一个窗口。
我查看了英特尔的 TBB,但它看起来比我需要的要复杂得多。
PTHREADS 中是否有与 Microsoft Windows 中的 WaitForMultipleObjects 等效的简单方法?
【问题讨论】:
-
我将其标记为 C,如果不是这种情况,请随时更改。
-
您是否尝试过对 pthread_join 进行循环 (N)。 opengroup.org/onlinepubs/007908799/xsh/pthread_join.html
-
我同意 small_ticket。为什么循环 n 个 pthread_joins 不起作用?
-
@small/jay,等到所有线程完成有什么帮助? OP 想知道他们中的 any 何时完成。开始 10 个然后等待所有 10 个完成后再开始另一个不会很有效。
-
@paxdiablo vy32 写道:“我希望有一些方法让主控制线程知道 N 个工作线程中的一个何时完成其工作并准备好进行更多工作(或开始另一个工作的时间) “据我所知,他想等10点完成后再开始一个新的。我错了吗?