C++11 標準提供了一個新的線程庫,內容包括了管理線程、保護共享數據、線程間的同步操做、低級原子操做等各類類。標準極大地提升了程序的可移植性,之前的多線程依賴於具體的平臺,而如今有了統一的接口進行實現。promise
- < thread > :包含std::thread類以及std::this_thread命名空間。管理線程的函數和類在 中聲明.
- < atomic > :包含std::atomic和std::atomic_flag類,以及一套C風格的原子類型和與C兼容的原子操做的函數。
- < mutex > :包含了與互斥量相關的類以及其餘類型和函數
- < future > :包含兩個Provider類(std::promise和std::package_task)和兩個Future類(std::future和std::shared_future)以及相關的類型和函數。
- < condition_variable > :包含與條件變量相關的類,包括std::condition_variable和std::condition_variable_any。
Thread多線程
default (1) |
thread() noexcept; |
initialization (2) |
template <class Fn, class... Args>
explicit thread (Fn&& fn, Args&&... args); |
copy [deleted] (3) |
thread (const thread&) = delete; |
move (4) |
thread (thread&& x) noexcept; |
- (1). 默認構造函數,建立一個空的 thread 執行對象。
- (2). 初始化構造函數,建立一個 thread對象,該 thread對象可被 joinable,新產生的線程會調用 fn 函數,該函數的參數由 args 給出。
- (3). 拷貝構造函數(被禁用),意味着 thread 不可被拷貝構造。
- (4). move 構造函數,move 構造函數,調用成功以後 x 不表明任何 thread 執行對象。
- 注意:可被 joinable 的 thread 對象必須在他們銷燬以前被主線程 join 或者將其設置爲 detached.