WaitForMultipleObjects 超过 64个handle

DWORD WaitForMultipleObjects(DWORD count, const HANDLE* pHandles, DWORD millisecs)
{
	DWORD retval = WAIT_TIMEOUT;

	// Check if objects need to be split up. In theory, the maximum is
	// MAXIMUM_WAIT_OBJECTS, but I found this code performs slightly faster
	// if the object are broken down in batches smaller than this.
	if (count > 25)
	{
		// loop continuously if infinite timeout specified
		do
		{
			// divide the batch of handles in two halves ...
			DWORD split = count / 2;
			DWORD wait = (millisecs == INFINITE ? 2000 : millisecs) / 2;
			int random = rand();

			// ... and recurse down both branches in pseudo random order
			for (short branch = 0; branch < 2 && retval == WAIT_TIMEOUT; branch++)
			{
				if (random % 2 == branch)
				{
					// recurse the lower half
					retval = testWindows::WaitForMultipleObjects(split, pHandles, wait);
				}
				else
				{
					// recurse the upper half
					retval
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值