void func() {
std::future<int> fut = std::async(std::launch::async, []{
std::this_thread::sleep_for(std::chrono::seconds(10));
return 8;
});
return;
}
假設我有這樣的功能。一個物件fut被std::future<int>初始化為一個std::async作業,該作業將在未來回傳一個整數。但是函式回傳fut后會立即釋放。func
是否有這樣的問題:當std::async作業回傳并嘗試分配8給物件fut時,物件已經被釋放了......
如果是這樣,可能會出現關于 SIGSEGV 的核心轉儲......
我說得對嗎?或者std::future有一些機制來避免這個問題?
uj5u.com熱心網友回復:
使用創建的期貨std::async具有等待任務完成的阻塞解構式。
即使您改為從 中創建未來std::promise,檔案~future()也不會提及您所詢問的問題。
檔案經常使用術語“共享狀態”,暗示承諾和未來共享一個(堆分配?)狀態,該狀態保存回傳值,并且在兩者都死之前不會被銷毀。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/481810.html
上一篇:memcpy性能取決于目標向量
