同步處理物件
同步處理物件 是物件,其句柄可以在其中一個 等候函式中指定, 協調多個線程的執行。 多個進程可以有相同的同步處理物件的句柄,讓進程間同步處理成為可能。
下列物件類型僅供同步處理使用。
類型 | 描述 |
---|---|
事件 | 通知一或多個等候的線程已發生事件。 如需詳細資訊,請參閱 事件物件。 |
Mutex | 一次只能由一個線程擁有,讓線程能夠協調共用資源的互斥存取。 如需詳細資訊,請參閱 Mutex Objects。 |
信號 | 維護介於零與某個最大值之間的計數,限制同時存取共用資源的線程數目。 如需詳細資訊,請參閱 Semaphore Objects。 |
可等候定時器 | 通知一或多個等候的線程,指出指定的時間已經到達。 如需詳細資訊,請參閱 等候定時器物件。 |
雖然可用於其他用途,但下列物件也可用於同步處理。
物件 | 描述 |
---|---|
變更通知 | FindFirstChangeNotification 函式所建立,當指定的目錄或目錄樹狀結構內發生指定變更類型時,其狀態會設定為發出訊號。 如需詳細資訊,請參閱 取得目錄變更通知。 |
主控台輸入 | 建立主控台時建立。 指定 CONIN$ 時,CreateFile 函式,或由 getStdHandle 函式傳回控制台輸入的句柄。 當主控台的輸入緩衝區中有未讀取的輸入時,其狀態會設定為訊號,並在輸入緩衝區是空的時設定為非信號。 如需主控台的詳細資訊,請參閱 Character-Mode 應用程式 |
工作 | 藉由呼叫 createJobObject函式所建立。 作業物件的狀態會設定為在終止所有進程時發出訊號,因為已超過指定的作業結束時間限制。 如需工作物件的詳細資訊,請參閱 作業物件。 |
記憶體資源通知 | CreateMemoryResourceNotification 函式所建立。 當實體記憶體內發生指定的變更類型時,其狀態會設定為發出訊號。 如需記憶體的詳細資訊,請參閱 記憶體管理。 |
過程 | 藉由呼叫 CreateProcess 函式來建立。 當進程正在執行時,其狀態會設定為非對齊,並在進程終止時設定為發出訊號。 如需行程的詳細資訊,請參閱 進程和線程。 |
線 | 藉由 呼叫 createProcess、CreateThread或 CreateRemoteThread 函式,建立新線程時建立。 其狀態會在線程執行時設定為未對齊,並在線程終止時設定為訊號。 如需線程的詳細資訊,請參閱 進程和線程。 |
在某些情況下,您也可以使用檔案、命名管道或通訊裝置作為同步處理物件;不過,不建議將其用於此目的。 請改用異步 I/O,並在 重疊 結構中設定的事件物件上等候。 使用事件物件更安全,因為在同一個檔案、命名管道或通訊裝置上執行多個同時重疊作業時,可能會發生混淆。 在此情況下,無法知道哪個作業導致物件的狀態發出訊號。
如需有關檔案、命名管道或通訊之 I/O 作業的詳細資訊,請參閱 同步處理和重疊輸入和輸出。