跳过等待多个事件的指令的代码。

问题描述 投票:0回答:1

我正在用C++编写一个程序,在 Visual Studio 19 等待640个事件发生(在它的例子中,它只是一个640个事件的数组 手柄 其中每个位置都需要向右或向左移动,这并不重要)。)

好吧,每个人都已经被初始化为

for(i=0; i<640; i++)
    vector[i]=CreateEvent(NULL, true, false, NULL);

这个问题是,最重要的线程是等待所有事件发生的人,而我是这样做的。

WaitForMultipleObjects(640, vector, TRUE, INFINITE);

而且我有个大问题,我的代码出于某种原因跳过了那行。有没有人可以告诉我发生了什么,或者给我一个替代的解决方案?

c++ windows multithreading events
1个回答
3
投票

根据文档中的 WaitForMultipleObjects,最大可等待的句柄数由以下公式给出。MAXIMUM_WAIT_OBJECTS. 搜索Windows头文件可以发现,它被定义为

#define MAXIMUM_WAIT_OBJECTS 64     // Maximum number of wait objects

WinNT.h. 所以你等待的对象太多。

既然你想等待所有的对象,你可以尝试将你的请求分解成小的、可管理的大小块。

© www.soinside.com 2019 - 2024. All rights reserved.