继续执行另一个线程

时间:2013-05-22 14:07:19

标签: c++ c multithreading winapi

我正在玩WinAPI,我已经开始使用线程了。我的程序有n个线程,它们相互协作。有一个线程,它将一些数据写入特定的内存位置并等待,直到线程使用特定的内存位置处理数据。然后整个过程再次重复,不会终止任何线程。

我的问题是忙于等待第二个线程会浪费太多时间。 是否有任何方法可以暂停当前线程(为其他线程留出时间)或以不同方式解决此问题?

请帮忙。

2 个答案:

答案 0 :(得分:1)

您可以使用同步对象(如mutex,semaaphores事件等)进行同步,使用WaitForSingleObject / WaitForMultipleObject API进行线程等待。

答案 1 :(得分:1)

我猜你正在主线程中轮询/忙等待,不断检查工作线程将设置的某些完成标志的状态。正如您所知,这是不可取的,因为您只需等待工作人员完成就使用一定比例的CPU带宽。在某些情况下,这将减少工作人员的计划时间,从而延迟完成工作。

相反,您可以使用同步对象(例如EventSemaphore)使主线程处于休眠状态,直到工作人员发出信号完成为止。