c 11新特性之future

2022-04-27 11:00:09 字數 545 閱讀 4921

std::future可以從非同步任務中獲取結果,一般與std::async配合使用,std::async用於建立非同步任務,實際上就是建立乙個執行緒執行相應任務。

先看段**:

#include #include 

#include

bool is_prime(int

x)

return

true;}

intmain()

std::async會首先建立執行緒執行is_prime(700020007), 任務建立之後,std::async立即返回乙個std::future物件。

主線程既可使用std::future::get獲取結果,如果呼叫過程中,任務尚未完成,則主線程阻塞至任務完成。

主線程也可使用std::future::wait_for等待結果返回,wait_for可設定超時時間,如果在超時時間之內任務完成,則返回std::future_status::ready狀態;如果在超時時間之內任務尚未完成,則返回std::future_status::timeout狀態。

C 11新特性之 nullptr

我們知道在程式設計的世界裡,0有雙重的角色,可以表示整數零,也可以表示乙個空指標。在c語言中,通過預編譯巨集null,可以區分0表示的是零還是 void 0.但是,在c 的世界中,這樣是不可以的。c 中允許函式過載。例如 void foo char void foo int 如果把null定義為0,...

c 11新特性之auto

在早期版本中,auto關鍵字用來宣告具有自動儲存器的區域性變數,auto關鍵字很少被使用,除了靜態變數之外,其它的變數預設是auto的。因此,在c 11中,刪除了原有的功能,並對其重新設計,增加了auto的型別推導功能。template double add t1 a,t2 b int main i...

C 11 新特性之 lambda

這是c 11新特性介紹的第三部分,涉及到c 11這次更新中較為重要的lambda表示式。不想看toy code的讀者可以直接拉到文章最後看這部分的總結。熟悉python的程式設計師應該對lambda不陌生。簡單來說,lambda就是乙個匿名的可呼叫 塊。在c 11新標準中,lambda具有如下格式 ...