问题标签 [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.

0 投票
0 回答
372 浏览

c++ - 为什么 WaitForMultipleObjects() 在一个循环后停止工作?

我正在使用 DirectSound 在 C++ 中播放音乐。我正在使用 DSBPOSITIONNOTIFICATION 变量来确定secondaryBuffer变量(类型IDirectSoundBuffer8*)的播放何时达到其大小的四分之一、四分之三或结束。用于创建通知和播放音乐的代码如下所示。

该函数WaitForMultipleObjects()能够检测事件何时发生(它成功地注意到第一季度事件)。但是,它停止在第二个循环上工作。程序到达该函数,但它只是永远坐在那里,而没有注意到另一个事件何时发生(我很确定secondaryBuffer它仍在播放,所以它应该注意到它已经播放到四分之三或已经停止)。如何更改代码以便函数真正注意到未来循环中的事件?

0 投票
1 回答
136 浏览

multithreading - 如何动态增加正在运行的线程数并使用列表等待它们?

我想创建一个线程列表并更改每个时间间隔的运行线程数(取决于某些条件),这是不可能的,array of THandle因为 - 如你所知 - 这里我需要在创建线程之前修复数组的长度,这就是我进行的方式:

但是,我对此有一些问题:

  • : 中不兼容的类型指针和基数ListOfThreadsH.add (HandleThread);,我可以理解为什么我会得到这个,但真的不知道如何解决它。

  • 以这种方式等待线程是否正确?因为据我所知ListOfThreadsH类型必须是array of THandle. 如果没有,在这种情况下如何等待线程?

如果这不是增加运行线程数的正确方法,那么如何进行?感谢您的回复。

0 投票
0 回答
113 浏览

c - 无法使用 waitForMultipleObjects 退出线程

我有 2 个线程,第一个正在做:`

第二个:

还:

关键是:如果我在控制台中写一些东西,我会用第二个线程做事,如果我得到 28 的接收,我想让第二个线程退出,所以我设置为信号事件。此时使用 waitformultipleobjects 我应该进入 case 0 并退出线程。相反,在我已经接收 28 并更改了事件的状态之后,如果我在控制台中写了一些东西,第二个线程进入案例 1。在写了其他东西之后,它似乎已经死了

有什么建议吗?

0 投票
1 回答
547 浏览

c++ - WaitForMultipleObjects 不等待

我有一个函数应该通过将命令传递给 CreateProcess 来启动一组进程。我连续两次调用这个函数,但是在第一组的进程完成之前,函数以某种方式退出并被第二次调用。

似乎只等待其中一个进程退出。当我关闭第一组进程中的一个应用程序时,将启动下一批。

我正在使用它来一起启动一组应用程序,并在所有这些进程退出时启动下一组。为什么我的WaitForMultipleObjects呼叫没有等待组中的所有进程退出?

0 投票
0 回答
275 浏览

c++ - 使用 pthread 条件变量而不是 pthread_join 来模拟 Windows WaitForMultipleObjects 的优点

使用 pthread 条件变量而不是 pthread_join 来模拟 Windows WaitForMultipleObject 有什么优势?

下面是使用 pthread_join 模拟 Windows WaitForMultipleObject 的 C++ 代码:

这是使用 pthread_cond_wait 模拟 Windows WaitForMultipleObject 的 C++ 代码:

任何帮助是极大的赞赏。

0 投票
1 回答
467 浏览

python - 当管道为空时,pywin32 WaitForMultipleObjects 不会阻塞

我有只读的命名管道,并且想阻塞直到有可用的输出(与select套接字上的行为相同)。

我假设WaitForMultipleObjects如果没有可用的输出会阻塞,但事实并非如此。为了有效地等待输出可用,可以做些什么?

在下面的代码中,循环执行了 100 次,尽管PeekNamedPipe每次迭代都返回 0 个字节可供读取。

0 投票
1 回答
1083 浏览

c++ - OpenGL 的 Win32 主消息循环

我在 Win32 OpenGL 应用程序中的主要消息循环如下所示:

它几乎可以正常工作,我只有一个问题:如果我按 Alt+F4 关闭窗口,它不会在我释放键后立即退出,但是,如果我将鼠标悬停在窗口上,它会立即退出。

A) 为什么会这样?我应该如何修改我的循环?

B)我发现的原始代码没有使用MsgWaitForMultipleObjects,而是连续调用了RenderFrame。我认为这种方式在重绘屏幕上浪费了太多的 CPU 时间。我对吗?通常的方式是什么,你把所有多余的能力都花在了画画上吗?

0 投票
1 回答
430 浏览

delphi - WaitForMultipleObjects 和 64 个线程

根据 Microsoft 的文档MAXIMUM_WAIT_OBJECTS,是64(等待的最大句柄),但由于某种原因,有时(因为随机)WaitForMultipleObjects返回WAIT_FAILED( $FFFFFFFF) 并GetLastError返回ERROR_INVALID_HANDLE( 6)。我究竟做错了什么?

0 投票
1 回答
147 浏览

c - 如何在 Windows 上的 c 中创建未定义数量的线程并使用 WaitForMultipleObjects()

PS:我对线程很陌生。

我有一个问题,我需要等待来自客户端的连接请求(完全任意次数),接受套接字上的连接,在连接后创建一个工作线程。创建的线程然后创建一个 char 数组,对其进行处理并需要将其传递给父进程。

我已经能够在 while 循环中创建线程,例如

我已经看到pthread_join()可用于将数据从线程传递到父进程(在 unix 中)。我的问题是,如何将它集成到主流程中的循环中。我希望以下方法会导致一次在客户端和服务器之间只能建立一个连接,这是不希望的。

编辑:我很高兴知道我想要的是否是不可能的,或者是否有替代方案pthread_join().或其 Windows 等价物。

编辑:我知道那pthread_join()是针对 Unix 的,并且已经读过WaitForMultipleObjects()它与 Windows 的等价物。无论如何,我仍然无法找到解决方案。

0 投票
1 回答
113 浏览

ace - 将 WaitForMultipleObjects() 与 ACE_SOCK_Stream 一起使用 - 仅在有数据时获取事件

是否可以将 WaitForMultipleObjects() 与 ACE_SOCK_Stream 一起使用,并使其仅在有数据可读取时才返回?

我试图遵循:

但是 WaitForMultipleObjects() 立即返回套接字流索引,表明它已准备好(它在无限循环中打印 0)。

通过ACE_SOCK_Acceptor(ACE_SOCK_Acceptor->accept()) 接受套接字。

如何让 WaitForMultipleObjects() 等到套接字有数据要读取?