executor的概念來源于以下三篇提案:
A Unified Executors Proposal for C++ | P0443R13
P1348R0: An Executor Property for Occupancy of Execution Agents
下面簡要的總結(jié)如下:
我們正在經(jīng)歷由小型硬件到大型超級計算機(jī)等各種硬件加速的網(wǎng)絡(luò)異步并行計算的優(yōu)雅組合。當(dāng)前金砍,硬件多樣性比以往任何時候都大局蚀,但是C ++程序員對其缺乏令人滿意的并行編程工具,這份提案提供了一個控制何時何地進(jìn)行工作的工具恕稠。
這里將工作和工作內(nèi)容進(jìn)行了區(qū)分:
工作——executor
工作內(nèi)容——sender琅绅、receiver
Executor-執(zhí)行上下文
Executor表示了在某個執(zhí)行上下文中執(zhí)行某個操作的需求。
在異步執(zhí)行環(huán)節(jié)中谱俭,我們需求保存上次調(diào)用時的上下文奉件,并在本次調(diào)用時在執(zhí)行上下文的基礎(chǔ)上執(zhí)行特定的操作。
// obtain an executor
executor auto ex = 執(zhí)行的上下文
// define our work as a nullary invocable
invocable auto work = []{ cout << "My work" << endl; };
// execute our work via the execute customization point
execution::execute(ex, work);
sender昆著、receiver-具體工作內(nèi)容
receiver只是具有特定接口和語義的回調(diào)
sender代表尚未安排執(zhí)行的工作县貌,必須在其中添加后續(xù)的sender,然后啟動任務(wù)