自 VS2010 起,微軟就在 CRT 中集成了并發(fā)運(yùn)行時(Concurrency Runtime),并行模式庫(PPL,Parallel Patterns Library)是其中的一個重要組成部分。7 年過去了,似乎大家都不怎么Care這個事情,相關(guān)文章少少且多是蜻蜓點(diǎn)水。實(shí)際上這個庫的設(shè)計相當(dāng)精彩,勝過 C++ 標(biāo)準(zhǔn)庫中 future/promise/async 系列許多,所以計劃寫一個系列探討 PPL 在實(shí)際項目中應(yīng)用中的各種細(xì)節(jié)。
好了,從最簡單的代碼開始,先演示下如何使用 task 類和 lambda 表達(dá)式創(chuàng)建一個并行任務(wù):
// final_answer.cpp// compile with: /EHsc #include <ppltasks.h>#include <iostream>using namespace concurrency;using namespace std;int main(int argc, char *argv[]) { task<int> final_answer([] { return 42; }); cout << "The final answer is: " << final_answer.get() << endl; return 0; }
使用 Visual Studio 命令行工具編譯
cl /EHsc final_answer.cpp
執(zhí)行結(jié)果為:
網(wǎng)友評論