2011-07-18 35 views
2

假设我有一个手动事件句柄h(使用CreateEvent手册创建)。检测是否有线程正在等待事件

我的应用程序中有几个线程,某些线程可能正在等待此事件(WaitForSingleObjectWaitForMultipleObject)。

在我的应用程序的特定时间,我想断言没有线程正在等待这个句柄h

是否有Windows API函数告诉我是否有任何线程在那个时间等待事件h

回答

1

我不相信Windows API提供了任何用于发布该信息的公共机制(无论线程是否正在等待同步对象)。这是典型的应用程序不需要知道的东西,并且如果提供的话可能会导致竞争条件。

例如,如果应用程序检查以确认没有线程正在等待,然后基于此做出决定,则很可能是错误的,因为线程可能在下一个时钟周期实际上开始等待事件,所以信息在检查后立即失效并可能出错。