我在 C 11 中撰寫了一個 for 回圈,我需要將一個異步物件推回到一個向量上。我想將物件初始化分為兩個步驟:
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);
}
現在我確實意識到boundFunc和asyncThread物件在 for 回圈結束時都超出了范圍(該push_back函式應該復制/移動值),但是為什么直接在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)));
}
uj5u.com熱心網友回復:
std::future物件不可復制,但可移動。因此,您必須在物件上呼叫 move 以將其推送到向量上。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/451761.html
下一篇:檢查字串中指定位置的空格
