0

所以我有一堆 pthread,其中一个是“主”线程,并确定工作线程应该运行还是休眠。但是睡眠的 POSIX 定义说The sleep() function shall cause the calling thread to be suspended from execution...

显然我可以做一些笨拙的事情,比如让每个工作线程检查是否设置了标志,但我正在寻找更好的东西。我希望我遗漏了一些明显的东西,因为这会影响我的计划。

4

1 回答 1

1

如果你无论如何都在破解 Cilk,我想你可以做任何你想做的事

如何让每个 pthread 在出队(或窃取)工作对象之前获取一个信号量单元,并在完成工作后释放它?当然,可能会有一点延迟,但可用于工作的线程数将与向信号量发出信号的单元数相匹配。要从您的控制线程中将可用线程数减少 N,请等待并获取 N 个单元,因此阻塞 N 个工作线程。要重新开始他们,请发出 N 个单位的信号。

这适用于您的系统吗?

Rgds,马丁

于 2011-07-04T09:46:10.587 回答