Asynchronous 在循环中使用WaitForMultipleObject而不是WaitForSingleObject有什么好处?

Asynchronous 在循环中使用WaitForMultipleObject而不是WaitForSingleObject有什么好处?,asynchronous,vector,synchronization,waitforsingleobject,waitformultipleobjects,Asynchronous,Vector,Synchronization,Waitforsingleobject,Waitformultipleobjects,我有一个向量。我想等他们全部完成。我不想把它们复制到数组中。无论如何,这样做并使用WaitForMultpleObjects,而不是在循环中使用WaitForSingleObject,有什么好处 谢谢和YouValue[0 ] < /代码>获得指向数组的指针。在C++11中,我相信这个行为也是标准所要求的。所以没有必要复制 至于好处,WaitForMultipleObjects将减少您醒来的次数,节省一些CPU时间。它还将自动同时获取所有的句柄,如果你有一堆互斥对象或信号量对象,需要将它们全部锁

我有一个
向量
。我想等他们全部完成。我不想把它们复制到数组中。无论如何,这样做并使用
WaitForMultpleObjects
,而不是在循环中使用
WaitForSingleObject
,有什么好处


谢谢和YouValue[0 ] < /代码>获得指向数组的指针。在C++11中,我相信这个行为也是标准所要求的。所以没有必要复制


至于好处,
WaitForMultipleObjects
将减少您醒来的次数,节省一些CPU时间。它还将自动同时获取所有的
句柄
,如果你有一堆互斥对象或信号量对象,需要将它们全部锁定,这一点很重要。

在我脑子里,WaitForMultipleObjects函数允许你等待所有对象完成,而
WaitForSingleObject
只等待单个对象完成。您使用哪一种取决于您需要的行为。问题还不止这些吗?使用
WaitForMultpleObjects()
您还可以逐个观察发生的事件。使用
WaitForSingleObject()
时,您无法始终按事件发生的顺序观察事件,除非将超时设置为最小值,这将使使用
WaitFor*对象*()
变得毫无意义,因为它会有效地降级为轮询。