首页 > 解决方案 > 代码跳过等待多个事件的指令

问题描述

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

好吧,所有这些都被初始化为

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

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

WaitForMultipleObjects(640, vector, TRUE, INFINITE);

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

标签: c++windowsmultithreadingevents

解决方案


根据 的文档WaitForMultipleObjects,可以等待的最大句柄数由 给出MAXIMUM_WAIT_OBJECTS。搜索 Windows 头文件显示它被定义为

#define MAXIMUM_WAIT_OBJECTS 64     // Maximum number of wait objects

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

由于您想等待所有这些,您可以尝试将您的请求分解成小的、可管理的大小块。


推荐阅读