“激發” signaled 對于不同的核心對象有不同的意義
Thread 線程,當線程結束時,線程對象即被激發。當線程還在進行時,則對象處于未激發狀態。
Process 進程,當進程結束時,進程對象即被激發。當進程還在進行時,則對象處于未激發狀態。
Change Notification ,當一個特定的磁盤子目錄中發生一件特別的變化時,此對象即被激發。此對象系由 FindFirstChangeNotification() 產生
Console Input ,當 console 窗口的輸入緩沖區中有數據可用時,此對象將處于激發狀態。 CreateFile ()和 GetStdFile ()兩函數可以獲得 console handle 。
Event , Event 對象的狀態直接受控于應用程序所使用的三個 Win32 函數: SetEvent (), PulseEvent (), ResetEvent ()。 CreateEvent ()和 OpenEvent ()都可以傳回一個 event object handle 。 Event 對象的狀態也可以被操作系統設定——如果使用于“ overlapped ”操作時。
Mutex ,如果 mutex 沒有被任何線程擁有,他就是處于激發狀態。一旦一個等待 mutex 的函數返回了, mutex 也就自動重置為未激發狀態。 CreateMutex ()和 OpenMutex ()都可以獲得一個 Mutext 的 handle 。
Semaphore , Semaphore 有點像 mutex ,但他有個計數器,可以約束其擁有者(線程)的個數。當計數器內容大于 0 時, semaphore 處于激發狀態,當計數器內容等于 0 時, semaphore 處于未激發狀態。 CreateSemaphore ()和 OpenSemaphore ()可以傳回一個 semaphore handle 。