替换WaitForSingleObject

时间:2013-06-09 07:07:18

标签: c++ multithreading

我在去块算法上使用了多线程。 没有线程,它运行30毫秒。 有40个线程,它运行40ms左右。 但是,根据我的观察,在WaitForSingleObject中使用了40ms的20ms。

我想知道,WaitForSingleObject是否有任何解决方法。

编辑: 我的问题包括两个循环。第二个依赖于第一个的结果。 我为每个循环使用四个线程。每个线程运行该循环内容的四分之一。

在开始接下来的4个线程之前,我需要等待第一个循环的四个线程完成 第二个循环。

但是我觉得WaitForSingleObject需要花费太多时间。 最慢的线程只需1到2毫秒。 但是在我的录音中,WaitFor singleObject有点相同。

没有线程,它的速度几乎相同甚至更慢。   因此,在我的情况下,线程确实有助于加速,但WaitForSingleObject会消耗掉 所有节省的时间,使程序像一个线程一样慢。

1 个答案:

答案 0 :(得分:0)

EnterCriticalSection和LeaveCriticalSection是更轻的同步原语。你应该尽可能优先于其他锁。

编辑(在EDIT之后):您可以使用Windows API Barrier,这可能与EnterCriticalSection的性能相当