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 所在的重要區域類型。