问题标签 [waitformultipleobjects]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 使用 IOCP - C++ - Windows 检测子进程的退出/失败
我有一个流程管理器。它可能会使用 createprocess 函数创建数千个(在纸上!)子进程。目前我正在使用多线程和 WiatForMultipleObejct 来检测任何孩子的退出或失败。
如果可能的话,我正在寻找一些建议/指南/伪代码/链接来检测使用IOCP的子进程的退出!?
非常感谢!
delphi - How to mix Sockets, Messages and Events
There is a thread that uses ADO Connection object, operates with a socket(s) and reacts on outer events using WaitForSigleObject or WaitforMultipleObjects. The thread has an endles loop with 3 actions:
Almost all time the thread wastes CPU asking about all three types of events. Is there way to make thread to sleep until one of three types of events happend, like WaitForMultiplyObjects or GetMessage?
windows - WaitForSingleObject 返回 ERROR_IO_PENDING
有谁知道为什么 WaitForSingleObject() 或 WaitForMultipleObjects() 会返回 ERROR_IO_PENDING,而我正在等待的对象是使用 CreateEvent() 创建的事件?
在我的测试中,我尝试了 WFSO 和 WFMO、手动和自动、INFINITE 和 5000,只要我调用 WaitFor*,我就会立即返回 ERROR_IO_PENDING。
事件对象到底有什么待处理的?他们的重点是你等待他们。此事件不是 OVERLAPPED 的一部分,与 IO 调用无关。它只是被用作我的工作线程退出的一次性标志(这是另一个线程的 SetEvent() )。
所以 - 问题是 - 从 WFSO 回来的 ERROR_IO_PENDING - 和想法?
富有的
c++ - 如何在一次调用中释放多个互斥锁
WinAPI 为我们提供了 WaitForMultipleObjects(..) 函数。假设我们必须等待数组中的所有互斥锁,那么如果有一个函数可以在一次调用中从数组中释放捕获的互斥锁,那就太好了。是什么让微软不给我们提供这么有用的东西?在 WaitForMultipleObjects(..) 之后释放互斥锁的最佳解决方案是什么,如果它们足够多?
waitformultipleobjects - 使用 debugdiag 获取额外的调用函数信息
我正在使用带有 .dmp 文件的 debugdiag 1.2。我一直在与 Microsoft 支持合作,我们得到了不同的函数跟踪详细信息 - 他的版本在函数名称和参数方面更加冗长。
我想知道我是否缺少与他相同的东西?
例如,我会得到:
对于相同的转储文件,他将得到:
DebugDiag 看起来是一个非常有用的工具——我非常想对它有一个很好的理解。在此先感谢您的时间。
c++ - WaitForMultipleObjects 会修改 *multiple* 对象的状态吗?
使用WaitForMultipleObjects(... /*bWaitAll=*/FALSE ...)
该函数时,显然会修改导致它返回的第一个同步对象的状态。也就是说,如果你有(有)一个带信号的自动重置事件,并且返回值表明这个事件对象导致函数返回,那么它肯定已经被重置了。
但是,请考虑您有多个对象的情况 - 这里:
当
bWaitAll
is时FALSE
,此函数按从索引 0 开始的顺序检查数组中的句柄,直到其中一个对象发出信号。 如果多个对象发出信号,则该函数返回数组中第一个句柄的索引,其对象被发出信号。
所以你只取回了第一个句柄,并且你不知道这个索引之后是否有任何事件已经发出信号。
对于状态被修改的对象,现在的问题是,如果多个对象在 WaitForMultipleObjects 返回时已发出信号,是只修改第一个的状态,还是所有已发出信号的对象都已重置?
文档确实指出:
该函数修改某些类型的同步对象的状态。修改仅针对其信号状态导致函数返回的一个或多个对象。
所以这表明多个对象确实有可能修改它们的状态。然而,这与声明略有矛盾:
...此函数按从索引 0 开始的顺序检查数组中的句柄,直到其中一个对象发出信号。...
此外,这意味着不可能将此功能与多个同步对象(如自动重置事件、信号量等)一起使用,这些对象的状态已被修改,因为您总是会丢失信息。
我在“多个句柄时 WaitForMultipleObjects 的行为......”的答案中找到了一个声明,其他人会得出结论(从那里的评论):
WaitForMultipleObjects() 从 0 开始扫描句柄数组,并在找到信号句柄后立即返回。只有第一个找到的句柄被重置为无信号状态;其他的都没有动。– user82238 / 2009-03-25 19:27
但想重新询问并可能明确确认这一点。
CodeGuru上也有一个有趣的讨论,这似乎并没有说明这一点。
multithreading - 多个线程可以依赖于单个手动 Kill 事件吗?
我有一个具有多个线程的 MFC 代码,这些线程都使用不同的参数对子例程进行递归调用。在子程序的开头,我调用了函数 CheckKillEvent():
如果 CheckKillEvent 返回 true,则立即 return()。
仅供参考,h_killEvent 初始化为:
即,它具有手动重置功能。
但是,在我将 Kill-event 设置如下后,这些线程似乎需要(字面上)永远完成:
问题是,从多个线程调用 CheckKillEvent() 是否存在问题?WaitForSingleObject() 是否应该在关键部分内完成?或者仅仅是我的递归代码不擅长递归到它不再调用自己的点?
visual-c++ - 如何等待 ShellExecute 运行多个文件?
我已经找到了让程序在这个线程中等待 ShellExecuteEx 的代码。如何让 ShellExecuteEx 启动多个文件并等到每个文件都关闭?
这是等待的代码:
c++ - C++ 使用 WaitForMultipleObjects 检测哪个线程完成
我试图同时运行 3 个线程,然后在主线程中检测哪个线程已经完成。我正在使用 WaitForMultipleObject 函数,但第 3 个线程似乎为这个 WFMO 函数循环,而它已经完成了它的工作(打印结果)。
输出:
c++ - 当 bWaitAll 为 TRUE 时,WaitForMultipleObjects 返回值
由于有些人对文档有不同的解释,我试图一劳永逸地澄清WaitForMultipleObjects的返回值时
bWaitAll = TRUE
.- 所有句柄都已发出信号
根据文档:
返回值
WAIT_OBJECT_0 到 (WAIT_OBJECT_0 + nCount–1)
如果 bWaitAll 为 TRUE,则返回值指示所有指定对象的状态都已发出信号。
问题
假设我已经向该函数传递了 5 个句柄,并且所有这些句柄都已发出信号,是返回值WAIT_OBJECT_0
吗?
笔记
我正在尝试以编程方式验证WaitForMultipleObjects
成功。
我想验证条件的正确性。