c++支援庫
c++包含執行緒、互斥、條件變數和**的內建支援。
class thread:
類thread
表示單個執行執行緒。執行緒允許多個函式併發執行。
緊接著關聯的執行緒物件構造,執行緒開始執行(為任何 os 排程延遲懸掛),始於作為構造函式引數提供的頂層函式。忽略頂層函式的返回值,而且若它以拋異常終止,則呼叫 std::terminate 。頂層函式可以通過 std::promise 或修改共享變數(這可能要求同步,見 std::mutex 與 std::atomic )交流其返回值或異常到呼叫方。
std::thread
物件亦可在不表示任何執行緒的狀態(預設構造、被移動、 detach 或 join 後),而執行執行緒可以不關聯到任何thread
物件( detach 後)。
沒有兩個std::thread
物件會表示同一執行執行緒;std::thread
不可複製構造 (copyconstructible) 或可複製賦值(copyassignable) ,儘管它可移動構造 (moveconstructible) 且可移動賦值 (moveassignable) 。
std::this_thread::yield() //建議實現再次排程執行緒的執行
#include #include #include // 建議其他執行緒執行一小段時間的「忙睡眠」
void little_sleep(std::chrono::microseconds us)
while (std::chrono::high_resolution_clock::now() < end);
}int main()
std::thread::id get_id() noexcept; //返回當前執行緒id
#include #include #include #include std::mutex g_display_mutex;
void foo()
int main()
//thread 11376 sleeping...
//thread 11936 sleeping...
template< class rep, class period >
void sleep_for( const std::chrono::duration
& sleep_duration );
阻塞當前執行緒執行,至少經過指定的sleep_duration
。
此函式可能阻塞長於sleep_duration
,因為排程或資源爭議延遲。
標準庫建議用穩定時鐘度量時長。若實現用系統時間代替,則等待時間亦可能對始終調節敏感。
sleep_duration
要睡眠的時長
(無)任何時鐘、 time_point 或 duration 在執行間丟擲的異常(標準庫提供的時鐘、時間點和時長決不丟擲)。
#include #include #include int main()
//可能輸出
//hello waiter
//waited 2000.11 ms
c 11 執行緒支援庫 通用互斥管理
template class mutex class lock guard 類lock guard是互斥封裝器,為在作用域塊期間占有互斥提供便利 raii 風格機制。建立lock guard物件時,它試圖接收給定互斥的所有權。控制離開建立lock guard物件的作用域時,銷毀lock guard並...
c 11多執行緒庫
建立執行緒的四種方法 執行緒類的建構函式是變參建構函式,第乙個引數是執行緒函式,後面的引數為執行緒函式的引數 引數通過值傳遞方式,若要引用傳遞須加std ref thread t1 counter,1,6 void counter int,int class counter 實現 operator ...
c 11的多執行緒支援一(執行緒啟動)
支援多執行緒程式設計,是c 11的乙個新特性。在語言層面編寫多執行緒程式,程式的可移植性得到很大提高。新的執行緒庫通過std thread管理執行緒的執行,啟動執行緒的方式有兩種 1 以乙個函式位址為引數,例項化乙個std thread物件 2 通過乙個類的例項構造乙個std thread物件,用於...