Concurrency 命名空間
Concurrency 命名空間會提供可讓您存取並行執行階段 (也就是 C++ 專用的並行程式設計架構) 的類別和函式。 如需詳細資訊,請參閱並行執行階段。
namespace Concurrency;
成員
Typedef
名稱 |
描述 |
---|---|
runtime_object_identity |
每個訊息執行個體都有遵循複製和傳遞的訊息元件之間的識別。 這不可以是訊息物件的位址。 |
TaskProc |
工作的基本抽象概念,定義為 void (__cdecl * TaskProc)(void *)。 會呼叫 TaskProc 來叫用工作的主體。 |
類別
名稱 |
描述 |
---|---|
分類適用於做為所有獨立代理程式的基底類別。 它用來對其他代理程式隱藏狀態,並透過訊息傳遞互動。 |
|
這個類別描述每當傳訊區塊獲得目標的指標,而此目標對所執行的作業來說並不正確時所擲回的例外狀況。 |
|
call 傳訊區塊是一個多來源的排序 target_block, 接收訊息時會叫用指定的函式。 |
|
choice 傳訊區塊是多來源的單一目標區塊,代表與一組來源的控制流程互動。 選擇區塊會等候多個來源的其中一個來產生訊息,而且會傳播產生訊息之來源的索引。 |
|
combinable<T> 物件適用於提供資料的執行緒私用複本,在平行演算法期間執行無鎖定的執行緒-本機子運算。 在平行作業結尾處,可以將執行緒私用子運算合併於最終結果。 這個類別可以用來代替共用變數,而且如果該共用變數有許多爭用情形,則可能可以改進效能。 |
|
concurrent_queue 類別序列容器類別,允許以先進先出的方式存取其項目。 它可以啟用一組有限的並行安全作業,例如 push 和 try_pop 等。 |
|
concurrent_vector 類別序列容器類別,允許以隨機方式存取任何項目。 它會啟用並行安全附加、項目存取、Iterator 存取及 Iterator 周遊作業。 |
|
代表執行內容的抽象概念。 |
|
這個類別描述從同樣的內容呼叫 Context 物件的 Unblock 方法所擲回的例外狀況。 這會指出指定內容自行解除封鎖的嘗試。 |
|
這個類別描述每當 Block 和 Unblock Context 物件的方法呼叫未正確配對時擲回的例外狀況。 |
|
明確察覺並行執行階段的 Non-reentrant Mutex。 |
|
代表與呼叫內容相關之目前排程器的抽象概念。 |
|
這個類別描述預設排程器已經存在於處理序中時呼叫 Scheduler::SetDefaultSchedulerPolicy 方法所擲回的例外狀況。 |
|
並行執行階段明確察覺的手動重設事件。 |
|
這個類別描述以不當的方式取得鎖定時擲回的例外狀況。 |
|
這個類別描述當 Attach 物件已經附加到目前的內容上時呼叫 Scheduler 方法擲回的例外狀況。 |
|
這個類別描述當尚未透過 Scheduler 物件的 Attach 方法將內容附加至任何排程器時呼叫 CurrentScheduler::Detach 方法所擲回的例外狀況。 |
|
這個類別描述將從不屬於排程器的內容關閉 Scheduler 物件上呼叫 Reference 方法所擲回的例外情況。 |
|
這個類別描述呼叫傳訊區塊的 link_target 方法,但傳訊區塊無法連結至目標時所擲回的例外狀況。 這可能是超過傳訊區塊允許連結數目或嘗試將特定目標連結至相同的來源兩次的結果。 |
|
這個類別描述透過 task_group 或 structured_task_group 物件的 run 方法多次排程 task_handle 物件時擲回例外狀況,而不中間變更呼叫 wait 或 run_and_wait 方法。 |
|
這個類別描述執行不正確的運作時擲回的例外狀況,並行執行階段擲回的其他例外狀況類型未準確地描述此作業。 |
|
這個類別描述將 _BeginOversubscription 參數設為 false 呼叫 Context::Oversubscribe 方法,而不先將 _BeginOversubscription 參數設為 true 來呼叫 Context::Oversubscribe 方法。 |
|
這個類別描述將非無效或未知的金鑰傳遞給 SchedulerPolicy 物件建構函式,或將必須透過其他方式 (如 SetConcurrencyLimits 方法) 變更的機碼傳遞給SchedulerPolicy 物件的 SetPolicyValue 方法時所擲回的例外狀況。 |
|
這個類別描述嘗試設定 SchedulerPolicy 物件的並行存取限制,以致 MinConcurrency 機碼的值小於 MaxConcurrency 機碼的值時擲回的例外狀況。 |
|
這個類別描述每當將 SchedulerPolicy 物件的原則機碼設為不正確的機碼值時擲回的例外狀況。 |
|
ISource 類別是所有來源區塊的介面。 來源區塊會將訊息傳播至 ITarget 區塊。 |
|
ITarget 類別是所有目標區塊的介面。 目標區塊會使用 ISource 區塊提供給它們的訊息。 |
|
join 傳訊區塊是單一目標、多來源的排序 propagator_block,會與來自其每個來源的 _Type 類型訊息合併。 |
|
基本訊息信封,包含在傳訊區塊之間傳遞的資料承載。 |
|
這個類別描述傳訊區塊找不到所要求之訊息時擲回的例外狀況。 |
|
message_processor 類別是處理 message 物件的抽象基底類別。 不保證訊息順序。 |
|
這個類別描述 task_group 或 structured_task_group 物件的建構函式執行時若仍有工作排程至該物件所擲回的例外狀況。 如果例外狀況導致堆疊回溯而達到解構函式,永遠不會擲回此例外狀況。 |
|
multi_link_registry 物件是管理多個來源區塊或多個目標區塊的 network_link_registry。 |
|
multitype_join 傳訊區塊是多來源的單一目標傳訊區塊,會與來自其來源的不同類型訊息合併,並且為其目標提供 Tuple 合併的訊息。 |
|
這個類別描述當並行執行階段偵測到您忘了透過 Scheduler 物件的 Attach 方法在附加到第二個排程器上呼叫 CurrentScheduler::Detach 方法時擲出的例外狀況。 |
|
network_link_registry 抽象基底類別會管理來源和目標區塊之間的連結。 |
|
這個類別描述作業逾時擲回的例外狀況。 |
|
ordered_message_processor 是 message_processor,可讓訊息區塊按照接收順序處理訊息。 |
|
overwrite_buffer 傳訊區塊是多目標、多來源的排序 propagator_block,一次能夠存放一個訊息。 新訊息覆寫先前保留的訊息。 |
|
propagator_block 類別是同時為來源和目標之訊息區塊的抽象基底類別。 它結合 source_block 和 target_block 類別的功能。 |
|
以寫入器偏好設定佇列為基礎且只能本機微調的讀取器-寫入器鎖定。 鎖定授與先進先出 (FIFO) 存取至寫入器,並且會在連續載入寫入器的情況下影響讀取器。 |
|
代表排程群組的抽象概念。 排程群組會組織一組相關的工作,這些工作受益於透過在同一個群組中執行另一個工作再移至另一個群組、透過再同一個 NUMA 節點或實體通訊端的同一個群組內執行多個項目而暫時緊密地排程在一起。 |
|
代表並行執行階段排程器的抽象概念。 |
|
這個類別描述作業需要將排程器附加至目前內容,而卻沒有這麼做時所擲回的例外狀況。 |
|
這個類別描述因無法在並行執行階段中取得關鍵來源而擲回的例外狀況。 |
|
SchedulerPolicy 類別包含一組索引鍵/值組,每個原則項目一個,可控制排程器執行個體的行為。 |
|
single_assignment 傳訊區塊是多目標、多來源的排序 propagator_block,能夠儲存寫入一次的單一 message。 |
|
single_link_registry 物件是只管理單一來源或目標區塊的 network_link_registry。 |
|
source_block 類別是僅限來源區塊的抽象基底類別。 類別會提供基本連結管理功能與常見的錯誤檢查功能。 |
|
source_link_manager 物件會管理 ISource 區塊與傳訊區塊網路的連結。 |
|
structured_task_group 類別代表平行工作的高度結構化集合。 您可以使用 task_handle 物件,將個別平行工作佇列到 structured_task_group 中並等候這些工作完成,也可以在工作完成執行前取消工作群組,這樣會中止所有尚未開始執行的工作。 |
|
target_block 類別是提供基本的連結管理功能和錯誤檢查僅限目標區塊的抽象基底類別。 |
|
task_group 類別表示可以等候或取消的平行工作集合。 |
|
task_handle 類別代表個別的平行工作項目。 它會封裝執行工作所需的指示和資料。 |
|
timer 傳訊區塊是單一目標 source_block,能夠在經過指定的時間長度或在特定時間間隔,將訊息傳送至它的目標。 |
|
transformer 傳訊區塊是多來源的單一目標排序 propagator_block,可以存放無限個不同類型訊息。 |
|
unbounded_buffer 傳訊區塊是多目標、多來源的排序 propagator_block,能夠存放無限個訊息。 |
|
這個類別描述使用不支援的作業系統時擲回的例外狀況。 並行執行階段不支援早於 Windows XP (Service Pack 3) 的作業系統。 |
結構
名稱 |
描述 |
---|---|
DispatchState 結構用來將狀態傳輸至 IExecutionContext::Dispatch 方法。 它描述在 IExecutionContext 介面上叫用 Dispatch 方法的情況。 |
|
執行內容的介面,可執行逾指定的虛擬處理器,也可以切換內容。 |
|
硬體執行緒的抽象概念。 |
|
並行執行階段資源管理員的介面。 這是排程器用來與資源管理員通訊的介面。 |
|
工作排程器抽象概念的介面。 並行執行階段的資源管理員會使用這個介面與工作排程器通訊。 |
|
排程器用來與並行執行階段的資源管理員通訊,以協調資源配置的介面。 |
|
執行緒的抽象概念。 視您所建立的排程器的 SchedulerType 原則機碼,資源管理員會授與您由一般 Win32 執行緒或使用者模式可排程 (UMS) 執行緒備份的執行緒 Proxy。 安裝 Windows 7 (含以上) 版本的 64 位元作業系統支援 UMS 執行緒。 |
|
代表 UMS 完成清單。 當 UMS 執行緒封鎖時,會分派排程器的指定排程內容,以決定封鎖原始執行緒時要在基礎虛擬處理器根排程的內容。 原始執行緒解除封鎖時,作業系統會將它佇列到可透過此介面存取的完成清單中。 排程器可以在指派的排程內容或其搜尋工作的其他任何位置查詢完成清單。 |
|
工作排程器抽象概念的介面,需要並行執行階段的資源管理員將使用者模式可排程的 (UMS) 執行緒傳遞給它。 資源管理員會使用這個介面與 UMS 執行緒排程器進行通訊。 IUMSScheduler 介面繼承自 IScheduler 介面。 |
|
執行緒的抽象概念。 如果您想要授與使用者模式可排程的 (UMS) 給您的執行緒,請將排程器原則項目 SchedulerKind 的值設為 UmsThreadDefault,並實作 IUMSScheduler 介面。 只有安裝 Windows 7 (含以上) 版本的 64 位元作業系統支援 UMS 執行緒。 |
|
代表資源管理員發出的通知,表示封鎖及觸發傳回排程器指派排程內容的執行緒 Proxy 已解除鎖定,而且已準備好進行排程。 若重新排程從 GetContext 方法傳回之執行緒 Proxy 的相關執行內容,則此介面不正確。 |
|
執行緒 Proxy 可以在其上執行的硬體執行緒的抽象概念。 |
列舉型別
名稱 |
描述 |
---|---|
agent 的有效狀態。 |
|
可以使用並行執行階段所提供的追蹤功能追蹤的事件類型。 |
|
關鍵區域內容的類型是 inside。 |
|
DynamicProgressFeedback 原則用來描述要根據從排程器收集到的資訊重新平衡排程器的資源,或者只要根據透過 IVirtualProcessorRoot 介面上的 Activate 和 Deactivate 方法呼叫進出閒置狀態的虛擬處理器。 如需可用排程器原則的詳細資訊,請參閱 PolicyElementKey 列舉。 |
|
join 傳訊區塊的型別。 |
|
message 物件對區塊的提供項目的有效回應。 |
|
描述排程器行為方面的原則機碼。 每個原則項目由一個關鍵值組描述。 如需排程器原則和它們對排程器的影響的詳細資訊,請參閱 工作排程器 (並行執行階段)。 |
|
SchedulerKind 原則用來描述排程器應用於基礎執行內容的執行緒類型。 如需可用排程器原則的詳細資訊,請參閱 PolicyElementKey 列舉。 |
|
SchedulingProtocol 原則用於描述排程器將使用的排程演算法。 如需可用排程器原則的詳細資訊,請參閱 PolicyElementKey 列舉。 |
|
用來表示執行緒 Proxy 所處的狀態 (當它正在執行合作內容切換到不同的執行緒 Proxy 時)。 |
|
描述 task_group 或 structured_task_group 物件的執行狀態。 等待完成排定的工作群組的工作的許多方法會傳回這個型別的值。 |
功能
名稱 |
描述 |
---|---|
多載。 非同步傳送作業,會排程工作將資料傳播到目標區塊。 |
|
多載。 從選擇性的 Scheduler 或 ScheduleGroup 與二到十個輸入來源建立 choice 傳訊區塊。 |
|
多載。 從選擇性的 Scheduler 或 ScheduleGroup 與二到十個輸入來源建立 greedy multitype_join 傳訊區塊。 |
|
多載。 從選擇性的 Scheduler 或 ScheduleGroup 與二到十個輸入來源建立 non_greedy multitype_join 傳訊區塊。 |
|
建立 task_handle 物件的 Factory 方法。 |
|
多載。 parallel_for 會逐一查看某個範圍的索引,並以平行方式在每個反覆項目執行使用者提供函式。 |
|
parallel_for_each 會平行套用指定的函式到範圍內的每個項目。 在語意上相當於 std 命名空間中的 for_each 函式,但項目的反覆項目會平行執行,而且不會指定反覆項目的順序。 _Func 引數必須支援 operator()(T) 形式的函式呼叫運算子,其中 T 參數是要逐一查看的容器的項目型別。 |
|
多載。 平行執行提供作為參數的函式物件,並加以封鎖直到完成執行為止。 每個函式物件都可以是 Lambda 運算式、函式指標,或是支援函式呼叫運算子與簽章 void operator()() 版本的任何物件。 |
|
多載。 一般接收實作,可讓內容等候來自一個來源的資料,並且篩選所接受的值。 |
|
多載。 同步傳送作業,會等候直到目標接受或拒絕訊息。 |
|
交換兩個 concurrent_vector 物件的項目。 |
|
多載。 一般嘗試-接收實作,可讓內容尋找來自一個來源的資料,並且篩選所接受的值。 如果資料還沒準備好,方法會傳回 false。 |
運算子
名稱 |
描述 |
---|---|
測試運算子左邊的 concurrent_vector 物件是否不等於 concurrent_vector 物件右邊的物件。 |
|
測試運算子左邊的 concurrent_vector 物件是否小於 concurrent_vector 物件右邊的物件。 |
|
測試運算子左邊的 concurrent_vector 物件是否小於 concurrent_vector 物件右邊的物件。 |
|
測試運算子左邊的 concurrent_vector 物件是否等於 concurrent_vector 物件右邊的物件。 |
|
測試運算子左邊的 concurrent_vector 物件是否大於 concurrent_vector 物件右邊的物件。 |
|
測試運算子左邊的 concurrent_vector 物件是否大於 concurrent_vector 物件右邊的物件。 |
常數
名稱 |
描述 |
---|---|
分類 GUID,描述直接與工作相關之並行執行階段引發的 ETW 事件。 |
|
目前執行階段的 ETW 提供者 GUID。 |
|
指出在 Visual Studio 2010 中定義的資源管理員介面的支援。 |
|
分類 GUID,描述其他分類未特別描述之並行執行階段引發的 ETW 事件。 |
|
分類 GUID,描述直接與內容相關之並行執行階段引發的 ETW 事件。 |
|
值,表示等候應該永遠不會逾時。 |
|
值,表示等候已逾時。 |
|
原則機碼 ContextPriority 的特殊值,代表排程器中所有內容的執行緒優先順序應該與建立排程器之執行緒的優先順序相同。 |
|
分類 GUID,描述直接與鎖定相關之並行執行階段引發的 ETW 事件。 |
|
MinConcurrency 和 MaxConcurrency 原則機碼的特殊值。 預設值是在沒有其他條件約束的情況下,電腦上的硬體執行緒數目。 |
|
分類 GUID,描述直接與 parallel_for_each使用方式相關之並行執行階段引發的 ETW 事件。 |
|
分類 GUID,描述直接與 parallel_for使用方式相關之並行執行階段引發的 ETW 事件。 |
|
分類 GUID,描述直接與 parallel_invoke使用方式相關之並行執行階段引發的 ETW 事件。 |
|
分類 GUID,描述直接與排程器資源管理員相關之並行執行階段引發的 ETW 事件。 |
|
分類 GUID,描述直接與排程群組相關之並行執行階段引發的 ETW 事件。 |
|
分類 GUID,描述直接與排程器活動相關之並行執行階段引發的 ETW 事件。 |
|
分類 GUID,描述直接與虛擬處理器相關之並行執行階段引發的 ETW 事件。 |
需求
標頭: agents.h、concrt.h、 concrtrm.h、 concurrent_queue.h、 concurrent_vector.h、 ppl.h