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