WaitForSingleObject
WaitForSingleObject?? 當指定的對象的狀態被標記或者指定的時間間隔過完時,此函數返回DWORD類型參數。
?
格式:
DWORD WaitForSingleObject(HANDLE hHandle,DWORD dwMilliseconds);
參數:
hHandle表示對象的句柄
dwMilliseconds指出了時間間隔;過了指定的時間,即使對象狀態沒發生改變,函數也會返回;如果此參數設為0,函數測試對象的狀態并且立即返回;如果此參數設為INFINITE,則表示此函數的時間間隔永遠不會流逝完——只有等待對象狀態被標識時返回。
返回值:
成功:WAIT_OBJECT_0:表示對象的狀態被標識
?? WAIT_TIMEOUT:表示指定時間已到而對象狀態沒有被標識
失敗:WAIT_FAILED:表明失敗
?
WaitForSingleObject 函數檢查指定對象當前狀態,如果對象的狀態沒有被標識,則調用的線程進入有效的等待狀態。在等待對象狀態被標識或者指定的時間間隔到期,線程只會占據(consume)處理器一小段時間。時間間隔需要被指定在0到0x7FFFFFFF之間的正數,最大的時間間隔值不等于無窮大而是0x7FFFFFFF,無窮大的時間間隔值是0xFFFFFFFF。任何在0x7FFFFFFF和0xFFFFFFFE之間的值都等同于0x7FFFFFFF;如果你需要一個時間間隔比0x7FFFFFFF還要大的話,使用表示不窮的值0xFFFFFFFF。
?
返回之前,等待函數修改了某些類型的同步對象的狀態,只有當對象的信號狀態引起了函數的返回時這種修改才發生。例如,一個信號量對象計數減少1。
WaitForSingleObject 函數能等待如下的各種對象:事件(Event)、線程(Thread)、進程(Process)、互斥量(Mutex)、信號量(Semaphore)。
使用時要小心調用等待函數和直接或間接產生窗口的代碼。如果一個線程創建了窗口,那么它必須處理消息。廣播消息發送到系統中的所有窗口。使用一個沒有時間間隔的等待函數的線程可能導致系統死鎖。例如,動態數據交換(DDE)協議和COM函數CoInitialize兩個都間接地創建了可能導致死鎖的窗口。因此,如果您有一個線程創建的窗口,使用MsgWaitForMultipleObjects 或者 MsgWaitForMultipleObjectsEx 而不是使用WaitForSingleObject。
轉載于:https://www.cnblogs.com/EmbeddedBoy/archive/2010/03/09/1681095.html
總結
以上是生活随笔為你收集整理的WaitForSingleObject的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有没有一些简便又好吃的甜品推荐呢?
- 下一篇: 花甲粉的制作方法哪里比较正宗?