1
這個想法是並行地對數組的每個元素執行操作。我想出了以下幾點:用std :: async編輯數組
struct dataContainer
{
int value;
bool flag;
dataContainer()
: value(1)
, flag(true)
{}
};
int main()
{
std::vector<dataContainer> arrData;
arrData.resize(10);
{
std::vector<std::future<void> > results;
std::for_each(arrData.begin(), arrData.end(), [&results](dataContainer& tData) {
results.emplace_back(std::async(std::launch::async, [](dataContainer& ttData) {
ttData.value++;
ttData.flag = false;
}, tData));
});
}
return 0;
}
但是,由std :: async調用的lambda不會對arrData的元素執行操作。其實,我不明白髮生了什麼事。看來,操作是在dataContainer的本地副本上執行的。
所以問題是怎麼回事,以及如何以這種方式對數組元素執行操作?
tData'的'最後一次出現在'async'通話 - 將其更改爲'的std :: REF(TDATA)'。否則,它確實被價值捕獲。 –
是的,它有幫助。謝謝! –