CurrentScheduler 類別

代表與呼叫內容相關之目前排程器的抽象概念。

語法

class CurrentScheduler;

成員

公用方法

名稱 描述
建立 建立新的排程器,其行為是由 _Policy 參數描述,並將它附加至呼叫內容。 新建立的排程器將會成為呼叫內容的目前排程器。
CreateScheduleGroup 已多載。 在與呼叫內容相關聯的排程器內建立新的排程群組。 採用 參數 _Placement 的版本會導致新建立的排程群組內的工作偏向于在該參數所指定的位置執行。
卸離 如果目前排程器存在,請將目前排程器與呼叫內容中斷連結,並將先前附加的排程器還原為目前的排程器。 在此方法傳回之後,呼叫內容會由先前使用 CurrentScheduler::CreateScheduler::Attach 方法附加至內容的排程器管理。
Get 傳回與呼叫內容相關聯的排程器指標,也稱為目前排程器。
GetNumberOfVirtualProcessors 傳回與呼叫內容相關聯之排程器的目前虛擬處理器數目。
GetPolicy 傳回目前排程器建立原則的複本。
識別碼 傳回目前排程器的唯一識別碼。
IsAvailableLocation 判斷某一特定位置是否可在目前的排程器中使用。
RegisterShutdownEvent 當與目前內容相關聯的排程器關閉並終結本身時,會導致傳入 參數的 _ShutdownEvent Windows 事件控制碼發出訊號。 當事件發出訊號時,已排程給排程器的所有工作都會完成。 您可以透過此方法註冊多個關機事件。
ScheduleTask 已多載。 在與呼叫內容相關聯的排程器內排程羽量級工作。 輕量工作會置於執行階段所決定的排程群組中。 採用 _Placement 參數的版本會造成工作在指定的位置變成優先執行。

備註

如果沒有與呼叫內容相關聯的排程器(請參閱 排程器 ),類別中的 CurrentScheduler 許多方法將會導致進程的預設排程器附件。 這也表示進程的預設排程器是在這類呼叫期間建立的。

繼承階層架構

CurrentScheduler

需求

標頭: concrt.h

命名空間: concurrency

建立

建立新的排程器,其行為是由 _Policy 參數描述,並將它附加至呼叫內容。 新建立的排程器將會成為呼叫內容的目前排程器。

static void __cdecl Create(const SchedulerPolicy& _Policy);

參數

_政策
描述新建立排程器行為的排程器原則。

備註

排程器對呼叫內容的附件會隱含地將參考計數放在排程器上。

使用 Create 方法建立排程器之後,您必須在未來某個時間點呼叫 CurrentScheduler::D etach 方法,才能讓排程器關閉。

如果從已經附加至不同排程器的內容呼叫這個方法,則會將現有的排程器記住為先前的排程器,而新建立的排程器會變成目前的排程器。 當您 CurrentScheduler::Detach 在稍後呼叫 方法時,先前的排程器會還原為目前的排程器。

此方法可以擲回各種例外狀況,包括 scheduler_resource_allocation_error invalid_scheduler_policy_value

CreateScheduleGroup

在與呼叫內容相關聯的排程器內建立新的排程群組。 採用 參數 _Placement 的版本會導致新建立的排程群組內的工作偏向于在該參數所指定的位置執行。

static ScheduleGroup* __cdecl CreateScheduleGroup();

static ScheduleGroup* __cdecl CreateScheduleGroup(location& _Placement);

參數

_位置
排程群組中工作會偏向于執行位置的位置參考。

傳回值

新建立排程群組的指標。 這個 ScheduleGroup 物件上放置了初始參考計數。

備註

如果呼叫的內容目前沒有任何相關聯的排程器,則這個方法會將處理序的預設排程器建立及/或附加至呼叫的內容。

當您完成排程工作時,必須在排程群組上叫 用 Release 方法。 排程器會在排入佇列的所有工作完成時終結排程群組。

請注意,如果您明確建立此排程器,您必須先釋放其內所有排程群組的參考,才能在排程器上釋放參考,方法是將目前內容與排程器中斷連結。

中斷連結

如果目前排程器存在,請將目前排程器與呼叫內容中斷連結,並將先前附加的排程器還原為目前的排程器。 在此方法傳回之後,呼叫內容會由先前使用 CurrentScheduler::CreateScheduler::Attach 方法附加至內容的排程器管理。

static void __cdecl Detach();

備註

方法 Detach 會隱含地從排程器中移除參考計數。

如果沒有附加至呼叫內容的排程器,呼叫這個方法會導致 擲回scheduler_not_attached 例外狀況。

從排程器內部和管理的內容呼叫這個方法,或是使用 Scheduler::Attach CurrentScheduler::Create 方法以外的 方法附加的內容,將會導致 擲回improper_scheduler_detach 例外狀況。

Get

傳回與呼叫內容相關聯的排程器指標,也稱為目前排程器。

static Scheduler* __cdecl Get();

傳回值

與呼叫內容相關聯之排程器的指標(目前的排程器)。

備註

如果呼叫的內容目前沒有任何相關聯的排程器,則這個方法會將處理序的預設排程器建立及/或附加至呼叫的內容。 這個方法所傳回的物件 Scheduler 上不會有其他參考。

GetNumberOfVirtualProcessors

傳回與呼叫內容相關聯之排程器的目前虛擬處理器數目。

static unsigned int __cdecl GetNumberOfVirtualProcessors();

傳回值

如果排程器與呼叫內容相關聯,該排程器的目前虛擬處理器數目;否則為 值 -1

備註

如果呼叫內容尚未與排程器相關聯,這個方法將不會產生排程器附件。

這個方法的傳回值是與呼叫內容相關聯之排程器虛擬處理器數目的即時取樣。 這個值傳回時可能已過時。

GetPolicy

傳回目前排程器建立原則的複本。

static SchedulerPolicy __cdecl GetPolicy();

傳回值

建立目前排程器的原則複本。

備註

如果呼叫的內容目前沒有任何相關聯的排程器,則這個方法會將處理序的預設排程器建立及/或附加至呼叫的內容。

Id

傳回目前排程器的唯一識別碼。

static unsigned int __cdecl Id();

傳回值

如果排程器與呼叫內容相關聯,則為該排程器的唯一識別碼;否則為 值 -1

備註

如果呼叫內容尚未與排程器相關聯,這個方法將不會產生排程器附件。

IsAvailableLocation

判斷某一特定位置是否可在目前的排程器中使用。

static bool __cdecl IsAvailableLocation(const location& _Placement);

參數

_位置
要查詢目前排程器的位置參考。

傳回值

指出目前排程器上是否有提供 _Placement 引數所指定的位置。

備註

如果呼叫內容尚未與排程器相關聯,這個方法將不會產生排程器附件。

請注意,傳回值是某一特定位置是否可用的瞬間取樣。 若有多個排程器,動態資源管理可以隨時在排程器中加入或移除資源。 如果發生這種情況,這個特定位置的可用性可能會改變。

RegisterShutdownEvent

當與目前內容相關聯的排程器關閉並終結本身時,會導致傳入 參數的 _ShutdownEvent Windows 事件控制碼發出訊號。 當事件發出訊號時,已排程給排程器的所有工作都會完成。 您可以透過此方法註冊多個關機事件。

static void __cdecl RegisterShutdownEvent(HANDLE _ShutdownEvent);

參數

_ShutdownEvent
Windows 事件物件的控制碼,當與目前內容相關聯的排程器關閉並終結本身時,執行時間會發出訊號。

備註

如果沒有附加至呼叫內容的排程器,呼叫這個方法會導致 擲回scheduler_not_attached 例外狀況。

ScheduleTask

在與呼叫內容相關聯的排程器內排程羽量級工作。 輕量工作會置於執行階段所決定的排程群組中。 採用 _Placement 參數的版本會造成工作在指定的位置變成優先執行。

static void __cdecl ScheduleTask(
    TaskProc _Proc,
    _Inout_opt_ void* _Data);

static void __cdecl ScheduleTask(
    TaskProc _Proc,
    _Inout_opt_ void* _Data,
    location& _Placement);

參數

_Proc
要執行的函式指標,以執行輕量型工作的主體。

_資料
將做為參數傳遞至工作主體之資料的 void 指標。

_位置
輕量工作將會變成優先執行的位置參考。

備註

如果呼叫的內容目前沒有任何相關聯的排程器,則這個方法會將處理序的預設排程器建立及/或附加至呼叫的內容。

另請參閱

concurrency 命名空間
Scheduler 類別
PolicyElementKey
工作排程器