Future 類型詳解
本文主要介紹 std::future
,std::shared_future
以及 std::future_error
,另外還會介紹 <future>
頭文件中的 std::async
,std::future_category
函數以及相關枚舉類型。
std::future
詳解
std::future
概述
前面已經多次提到過 std::future
,那么 std::future
究竟是什么呢?簡單地說,std::future
可以用來獲取異步任務的結果,因此可以把它當成一種簡單的線程間同步的手段。std::future
通常由某個 Provider 創建,你可以把 Provider 想象成一個異步任務的提供者,Provider 在某個線程中設置共享狀態的值,與該共享狀態相關聯的 std::future
對象調用 get
(通常在另外一個線程中) 獲取該值,如果共享狀態的標志不為 ready
,則調用 std::future::get
會阻塞當前的調用者,直到 Provider 設置了共享狀態的值(此時共享狀態的標志變為 ready
),std::future::get
返回異步任務的值或異常(如果發生了異常)。
一個有效(valid<