天天看點

C++ future async promise 用法詳解 - async

C++11添加了thread,可以通過std::thread({})友善的建立線程

thread不能友善的擷取線程運作結果

傳回值為std::future(下面會講到),第一個參數policy,第二個參數為function,可以是lamda

關于policy

std::launch::async  建立線程,異步執行

std::launch::deferred 目前線程,調用特定函數時,同步執行

std::launch::async | std::launch::deferred  取決于實作,不得而知

NULL 取決于實作,不得而知

std::launch::async 理論上會建立線程異步執行task,std::launch::deferred 隻會在目前線程執行

policy為async時,如果沒有擷取結果,會單線程同步執行task

由于async采用async policy時,本質上還是建立一個線程

是以不适合輕量task,線程的建立和銷毀開銷可能更大

這裡未來應該支援線程池

繼續閱讀