std::async基本用法
參考:
https://www.cnblogs.com/moodlxs/p/10111601.html
https://www.yht7.com/news/29953
std::async的啟動策略類型是個枚舉類enum class launch,包括:
std::launch::deferred:表示入口函數調用被延遲到std::future的wait或get才執行,如果沒調用wait和get,線程則不會創建,即便是調用了get和wait也不會創建新新線程,函數的調用是主線程調用的
std::launch::async:在調用async的時候就創建新線程,系統默認傳的參數
注意:
- std::future::get只能調用一次,多次調用會返回異常
- 主線程使用std::future::get獲取結果,如果調用過程中,任務尚未完成,則主線程阻塞至任務完成
- std::launch::deferred|std::launch::async這種組合沒有實際起作用,輸入這樣的參數,起作用的只有std::launch::async