我正在用C++编写一个程序,在 Visual Studio 19 等待640个事件发生(在它的例子中,它只是一个640个事件的数组 手柄 其中每个位置都需要向右或向左移动,这并不重要)。)
好吧,每个人都已经被初始化为
for(i=0; i<640; i++)
vector[i]=CreateEvent(NULL, true, false, NULL);
这个问题是,最重要的线程是等待所有事件发生的人,而我是这样做的。
WaitForMultipleObjects(640, vector, TRUE, INFINITE);
而且我有个大问题,我的代码出于某种原因跳过了那行。有没有人可以告诉我发生了什么,或者给我一个替代的解决方案?
根据文档中的 WaitForMultipleObjects
,最大可等待的句柄数由以下公式给出。MAXIMUM_WAIT_OBJECTS
. 搜索Windows头文件可以发现,它被定义为
#define MAXIMUM_WAIT_OBJECTS 64 // Maximum number of wait objects
在 WinNT.h
. 所以你等待的对象太多。
既然你想等待所有的对象,你可以尝试将你的请求分解成小的、可管理的大小块。