时,它调用 Windows 7 或 Windows Server 2008 R2 中的 SignalObjectAndWait 应用程序挂起

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。

点击这里察看该文章的英文版: 2795543
症状
调用SignalObjectAndWaitPulseEvent Api 的应用程序可能会出现在 Windows 7 中,或在 Windows Server 2008 R2 中的死锁。如果通过SignalObjectAndWait信号的线程调用PulseEventSignalObjectAndWait呼叫等待对象发出信号, SignalObjectAndWait的调用方线程无法接收信号等待对象的状态。
原因
信号和等待操作不能保证进行原子操作作为应用程序调用SignalObjectAndWait函数。
解决方案
若要解决此问题,请配置要调用SetEvent API (而不是PulseEvent API 的应用程序。在大多数情况下,此方法应起作用。

警告:本文已自动翻译

属性

文章 ID:2795543 - 上次审阅时间:01/30/2013 16:27:00 - 修订版本: 1.0

Windows 7 Enterprise, Windows 7 Professional, Windows 7 Ultimate, Windows 7 Service Pack 1, Windows Server 2008 R2 Standard, Windows Server 2008 R2 Standard without Hyper-V, Windows Server 2008 R2 Enterprise, Windows Server 2008 R2 Enterprise without Hyper-V, Windows Server 2008 R2 Datacenter, Windows Server 2008 R2 Datacenter without Hyper-V, Windows Server 2008 R2 for Itanium-Based Systems, Windows Server 2008 R2 Service Pack 1

  • kbmt KB2795543 KbMtzh
反馈