您的位置:首页 > 移动开发 > Objective-C

WaitForMultipleobjects 最大等待对象限制

2013-12-17 16:55 501 查看
排查bug 搞了一个下午 最后才定位这个函数  一看API 居然是最大等待个数限制 

谨以此文 祭奠那些逝去的细胞

The number of object handles in the array pointed to by lpHandles.
The maximum number of object handles is MAXIMUM_WAIT_OBJECTS.
This parameter cannot be zero.

参见WinNT.h
#define MAXIMUM_WAIT_OBJECTS 64     // Maximum number of wait objects

因而当线程数多于64时WaitForMultipleObjects应做如下更改: 

    int tempNumThreads = numThreads; 

    int tempMax = 0; 

    while( tempNumThreads >= MAXIMUM_WAIT_OBJECTS ) 

    { 

        tempNumThreads -= MAXIMUM_WAIT_OBJECTS; 

        WaitForMultipleObjects( MAXIMUM_WAIT_OBJECTS, &hThread[ tempMax], TRUE, INFINITE); 

        tempMax += MAXIMUM_WAIT_OBJECTS; 

    } 

    WaitForMultipleObjects( tempNumThreads, &hThread[ tempMax ], TRUE, INFINITE);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐