自 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ù):

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動開發(fā)培訓(xùn)

// 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;
}

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動開發(fā)培訓(xùn)

使用 Visual Studio 命令行工具編譯

cl /EHsc final_answer.cpp

執(zhí)行結(jié)果為:

網(wǎng)友評論