IUMSThreadProxy 結構
執行緒的抽象概念。 如果您想要將可使用者模式排程 (UMS) 的執行緒授與給排程器,請將排程器原則項目 SchedulerKind
的值設為 UmsThreadDefault
,並實作 IUMSScheduler
介面。 只有安裝 Windows 7 (含以上) 版本的 64 位元作業系統支援 UMS 執行緒。
語法
struct IUMSThreadProxy : public IThreadProxy;
成員
公用方法
名稱 | 描述 |
---|---|
IUMSThreadProxy::EnterCriticalRegion | 呼叫 以進入重要區域。 在關鍵區域內時,排程器不會觀察區域期間發生的非同步封鎖作業。 這表示排程器不會針對 UMS 執行緒重新輸入分頁錯誤、執行緒暫停、核心非同步程序呼叫 (APCs)等等。 |
IUMSThreadProxy::EnterHyperCriticalRegion | 呼叫 以進入超關鍵區域。 在超關鍵區域內時,排程器不會觀察區域期間發生的任何封鎖作業。 這表示不會因為 UMS 執行緒的封鎖函式呼叫、鎖定封鎖的擷取嘗試、分頁錯誤、執行緒暫止、核心非同步程序呼叫 (APC) 等,而重新進入排程器。 |
IUMSThreadProxy::ExitCriticalRegion | 呼叫 以結束重要區域。 |
IUMSThreadProxy::ExitHyperCriticalRegion | 呼叫 以結束超關鍵區域。 |
IUMSThreadProxy::GetCriticalRegionType | 傳回執行緒 Proxy 所在的重要區欄位型別。 因為超關鍵區域是重要區域的超集合,如果程式碼已進入關鍵區域,則會傳回超關鍵區域 InsideHyperCriticalRegion 。 |
繼承階層架構
IUMSThreadProxy
需求
標頭: concrtrm.h
命名空間: concurrency
IUMSThreadProxy::EnterCriticalRegion 方法
呼叫 以進入重要區域。 在關鍵區域內時,排程器不會觀察區域期間發生的非同步封鎖作業。 這表示排程器不會針對 UMS 執行緒重新輸入分頁錯誤、執行緒暫停、核心非同步程序呼叫 (APCs)等等。
virtual int EnterCriticalRegion() = 0;
傳回值
重要區域的新深度。 重要區域會重新進入。
IUMSThreadProxy::EnterHyperCriticalRegion 方法
呼叫 以進入超關鍵區域。 在超關鍵區域內時,排程器不會觀察區域期間發生的任何封鎖作業。 這表示不會因為 UMS 執行緒的封鎖函式呼叫、鎖定封鎖的擷取嘗試、分頁錯誤、執行緒暫止、核心非同步程序呼叫 (APC) 等,而重新進入排程器。
virtual int EnterHyperCriticalRegion() = 0;
傳回值
超關鍵區域的新深度。 超關鍵區域會重新進入。
備註
排程器必須特別小心它所呼叫的方法,以及它在這類區域中取得哪些鎖定。 如果這類區域中的程式碼封鎖了排程器負責排程的鎖定,則死結可能會隨之而來。
IUMSThreadProxy::ExitCriticalRegion 方法
呼叫 以結束重要區域。
virtual int ExitCriticalRegion() = 0;
傳回值
重要區域的新深度。 重要區域會重新進入。
IUMSThreadProxy::ExitHyperCriticalRegion 方法
呼叫 以結束超關鍵區域。
virtual int ExitHyperCriticalRegion() = 0;
傳回值
超關鍵區域的新深度。 超關鍵區域會重新進入。
IUMSThreadProxy::GetCriticalRegionType 方法
傳回執行緒 Proxy 所在的重要區欄位型別。 因為超關鍵區域是重要區域的超集合,如果程式碼已進入關鍵區域,則會傳回超關鍵區域 InsideHyperCriticalRegion
。
virtual CriticalRegionType GetCriticalRegionType() const = 0;
傳回值
執行緒 Proxy 所在的重要區欄位型別。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應