C++ 继续执行另一个线程

C++ 继续执行另一个线程,c++,c,multithreading,winapi,C++,C,Multithreading,Winapi,我目前正在使用WinAPI,我已经开始使用线程。我的程序有n个线程,它们相互配合工作。有一个主线程,它将一些数据写入特定的内存位置,并等待处理特定内存位置的线程处理数据。然后整个过程再次重复,而不终止任何线程 我的问题是,忙于等待第二个线程会浪费太多时间。 有没有办法挂起当前线程(为其他线程留出时间)或以不同方式解决此问题 请提供帮助。您可以使用同步对象(如互斥对象、Semaphores事件等)进行同步,使用WaitForSingleObject/WaitForMultipleObject AP

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

我的问题是,忙于等待第二个线程会浪费太多时间。 有没有办法挂起当前线程(为其他线程留出时间)或以不同方式解决此问题


请提供帮助。

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

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


相反,您可以使用同步对象(如或)让主线程睡眠,直到辅助线程发出完成信号。

WaitForMultipleObjects?您的主线程是否正在轮询辅助线程?如果是这样的话,请考虑使用同步对象,例如或用法(您的示例),只需在bWaitAll参数中传递TRUE谢谢您的信号量建议,我在msdn上找到了一些东西。请把它贴出来作为答案。