Jak*_*ake 9 c++ multithreading
MSDN说
对象句柄的最大数量为MAXIMUM_WAIT_OBJECTS
for WaitForMultipleObjects...在我的计算机上定义为64.它真的只有64吗?
谢谢
Gab*_*abe 17
是的,它确实是64.因为它是a #define,它不能在没有重新编译程序的情况下改变,所以它几乎永远不会改变.
由于STATUS_ABANDONED_WAIT_63被定义为0xBF并且STATUS_USER_APC被定义为0xC0,如果你增加MAXIMUM_WAIT_OBJECTS甚至只有一个,则无法区分被放弃的第65个句柄与APC终止等待之间的区别.正确更改MAXIMUM_WAIT_OBJECTS将需要重新编号状态代码,这需要重新编译现有的每个Win32程序.
此外,编译为MAXIMUM_WAIT_OBJECTS定义为65 的程序将在定义为64的OS上失败.
是的,那真的是那个宏的价值.
这是否真的是函数能够一次等待的最大对象数是内部实现细节.但是如果我正在编写该函数,我会检查给定的数组长度,以确保它在继续之前是在记录的范围内,即使其余代码碰巧能够等待更多,因为我不想要API的使用者使用超过文档记录的最大值然后依赖于此类未记录的行为,从而在操作系统的未来版本中对函数的任何潜在实现提出要求