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
,有什么好处
谢谢首先,在我所知道的每一个C++编译器中,向量都是数组,并且可以用“代码>和YouValue[0 ] < /代码>获得指向数组的指针。在C++11中,我相信这个行为也是标准所要求的。所以没有必要复制
至于好处,
WaitForMultipleObjects
将减少您醒来的次数,节省一些CPU时间。它还将自动同时获取所有的句柄
,如果你有一堆互斥对象或信号量对象,需要将它们全部锁定,这一点很重要。在我脑子里,WaitForMultipleObjects函数允许你等待所有对象完成,而WaitForSingleObject
只等待单个对象完成。您使用哪一种取决于您需要的行为。问题还不止这些吗?使用WaitForMultpleObjects()
您还可以逐个观察发生的事件。使用WaitForSingleObject()
时,您无法始终按事件发生的顺序观察事件,除非将超时设置为最小值,这将使使用WaitFor*对象*()
变得毫无意义,因为它会有效地降级为轮询。