[英]Can std::future cause coredump without get or wait
void func() {
std::future<int> fut = std::async(std::launch::async, []{
std::this_thread::sleep_for(std::chrono::seconds(10));
return 8;
});
return;
}
假設我有這樣的功能。 std::future<int>
的對象fut
使用std::async
作業初始化,該作業將在未來返回一個整數。 但是fut
會在函數func
返回后立即釋放。
是否存在這樣的問題:當std::async
作業返回並嘗試將8
分配給對象fut
時,該對象已被釋放...
如果是這樣,可能會出現關於 SIGSEGV 的核心轉儲......
我說得對嗎? 或者std::future
有一些機制來避免這個問題?
使用std::async
創建的期貨具有等待任務完成的阻塞析構函數。
即使您改為從std::promise
創建未來,~future()
的文檔也不會提及您要詢問的問題。
文檔經常使用術語“共享狀態”,暗示承諾和未來共享一個(堆分配?)狀態,該狀態保存返回值,並且在兩者都死之前不會被銷毀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.