每个人都可能知道的代码运行程序,等待它结束:由我自己的CreateProcess与WaitForSingleObject的性能下降
CreateProcess(...
WaitForSingleObject(Process.hProcess, INFINITE
它被多次使用。但是最近我发现,当它启动一个带有多媒体播放的程序时,这个调用的性能比从一般文件管理器(Windows XP)执行的同样的过程要糟糕得多。这对我的(父母)进程的CPU消耗没有问题,但在播放片段时会出现意想不到的小停顿。
我做了一点变化是这样的:
CreateProcess ...
do {
Sleep(100);
Res = WaitForSingleObject(Process.hProcess, 10);
} while (Res == WAIT_TIMEOUT);
它帮助。现在子进程没有问题地播放片段。 那么第一个片段出现了什么问题,并且在某处记录了它?正如我从测试中看到的,第二个“等待”比第一个更“放松”,但第一个至少没有正式吃掉CPU
您正在观察错误的一面。显然,如果父母被阻止等待,子进程的性能会更差。 WTF的确如此。 – MSalters
这个答案中的小bug:MsgWaitForMultipleObjects()指向的链接实际上指向Sleep()函数的MSDN文档。有点有趣的方式。 ;-) –