0

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

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

请帮忙。

4

2 回答 2

1

您可以使用互斥锁、信号量事件等同步对象进行同步,并使用 WaitForSingleObject/WaitForMultipleObject API 进行线程等待。

于 2013-05-22T14:36:27.083 回答
1

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

与其这样做,您可以使用诸如EventSemaphore之类的同步对象让您的主线程休眠,直到 worker 发出完成信号。

于 2013-05-22T14:38:57.010 回答