簡體   English   中英

C++ 向量 push_back 異步 object 在 for 循環中

[英]C++ vector push_back async object in for loop

我在 C++11 中編寫了一個 for 循環,我需要將異步 object 推回一個向量。 我想將 object 初始化分成兩步:

    std::vector<std::future<bool>> asyncThreads;

    for (int i = 0; i < processorCount; i++) {
        auto boundFunc = std::bind(&Foo::foo, this);
        auto asyncThread = std::async(std::launch::async, boundFunc)

        asyncThreads.push_back(asyncThread);
    }

現在我確實意識到在 for 循環結束時boundFuncasyncThread對象 scope 中的 go( push_back function 應該復制/移動值),但是為什么直接在push_back call中聲明對象有效? 像這樣:

    std::vector<std::future<bool>> asyncThreads;

    for (int i = 0; i < processorCount; i++) {
        asyncThreads.push_back(std::async(std::launch::async, std::bind(&Foo::foo, this)));
    }

std::future object 不可復制,但可移動。 因此,您必須在 object 上調用 move 以將其推送到矢量上。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM