标签: c++ c multithreading winapi
我正在玩WinAPI,我已经开始使用线程了。我的程序有n个线程,它们相互协作。有一个主线程,它将一些数据写入特定的内存位置并等待,直到线程使用特定的内存位置处理数据。然后整个过程再次重复,不会终止任何线程。
n
我的问题是忙于等待第二个线程会浪费太多时间。 是否有任何方法可以暂停当前线程(为其他线程留出时间)或以不同方式解决此问题?
请帮忙。
答案 0 :(得分:1)
您可以使用同步对象(如mutex,semaaphores事件等)进行同步,使用WaitForSingleObject / WaitForMultipleObject API进行线程等待。
答案 1 :(得分:1)
我猜你正在主线程中轮询/忙等待,不断检查工作线程将设置的某些完成标志的状态。正如您所知,这是不可取的,因为您只需等待工作人员完成就使用一定比例的CPU带宽。在某些情况下,这将减少工作人员的计划时间,从而延迟完成工作。
相反,您可以使用同步对象(例如Event或Semaphore)使主线程处于休眠状态,直到工作人员发出信号完成为止。