自 VS2010 起,微軟就在 CRT 中集成了并發(fā)運(yùn)行時(shí)(Concurrency Runtime),并行模式庫(PPL,Parallel Patterns Library)是其中的一個(gè)重要組成部分。7 年過去了,似乎大家都不怎么Care這個(gè)事情,相關(guān)文章少少且多是蜻蜓點(diǎn)水。實(shí)際上這個(gè)庫的設(shè)計(jì)相當(dāng)精彩,勝過 C++ 標(biāo)準(zhǔn)庫中 future/promise/async 系列許多,所以計(jì)劃寫一個(gè)系列探討 PPL 在實(shí)際項(xiàng)目中應(yīng)用中的各種細(xì)節(jié)。

 

好了,從最簡單的代碼開始,先演示下如何使用 task 類和 lambda 表達(dá)式創(chuàng)建一個(gè)并行任務(wù):

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動(dòng)開發(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),移動(dòng)開發(fā)培訓(xùn)

使用 Visual Studio 命令行工具編譯

cl /EHsc final_answer.cpp

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

網(wǎng)友評論