【发布时间】:2013-12-07 10:38:52
【问题描述】:
WinAPI 为我们提供了 WaitForMultipleObjects(..) 函数。假设我们必须等待数组中的所有互斥锁,那么如果有一个函数可以在一次调用中从数组中释放捕获的互斥锁,那就太好了。是什么让微软不给我们提供这么有用的东西?在 WaitForMultipleObjects(..) 之后释放互斥量(如果它们足够多)最好的解决方案是什么?
【问题讨论】:
-
您不需要以原子方式释放它们,因此不需要这样的功能。一次锁定大量互斥锁是非常不寻常的。等待死锁。
-
@AlanStokers 谢谢!假设我们用 WaitForMultipleObjects(..) 捕获了 5 个互斥体,一个一个地释放它们会有点混乱。
-
@user2543574 编写一个接受计数和
HANDLE*(很像WaitForMultipleObjects)并在循环中释放它们的函数很简单。 -
@syam 我知道..我知道..但我很好奇微软对此有何评论?
-
如果您想知道 为什么 他们没有提供这样的功能,那么恐怕您的问题在 SO 上是题外话,因为我们只能 推测他们的动机,而 SO 是针对可证明的事实。至于 how (你的问题的标题)我已经给出了答案:你自己写那个微不足道的函数。 ;)
标签: c++ winapi mutex release waitformultipleobjects