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,線程的建立和銷毀開銷可能更大
這裡未來應該支援線程池