C ++は、Thread(個別に実行されるスレッドを表すために使用されるクラス)スレッドクラスを提供します。
マルチスレッド環境では、実行スレッドは他のスレッドの命令シーケンスと同時に実行できる命令シーケンスであり、アドレス空間を共有します。
初期化されたスレッドオブジェクトは、有効な実行スレッドを表します。このようなスレッドは結合可能であり、一意のスレッドIDを持っています。
デフォルトで構築された(初期化されていない)スレッドオブジェクトは結合できず、そのスレッドIDはすべての結合できないスレッドと共有されます。
結合可能なスレッドは、移動後、または結合またはデタッチを呼び出した後、結合できなくなります。
メンバータイプ:
idスレッドid(パブリックメンバータイプ)
native_handle_typeネイティブハンドルタイプ(パブリックメンバータイプ)
メンバー機能
コンストラクタ
デストラクタ
演算子=移動-スレッドの割り当て(パブリック)
get_idスレッドIDの取得
(パブリック)
参加可能スレッドが参加可能かどうかの確認(パブリック)参加スレッドの参加(パブリック)
デタッチデタッチスレッド(パブリック)
スワップスワップスレッド(パブリック)
native_handleネイティブの取得handle(public)
hardware_concurrency [static]ハードウェアの同時実行性を確認します(public static)
非メンバーのオーバーロードされた機能
スワップ(スレッド)交换スレッド(関数)
例
// thread example
#include <iostream>
#include <thread>
void foo() {
std::cout << "foo" << std::endl;
}
void bar(int x) {
std::cout << "bar int x" << std::endl;
}
int main() {
// 创建一个调用 foo 接口的线程。
std::thread first(foo);
// 创建一个调用 bar 接口 参数为 int 的线程。
std::thread second(bar, 0);
std::cout << "main, foo and bar now execute concurrently...\n";
// 等待线程结束
first.join();
second.join();
std::cout << "foo and bar completed.\n";
return 0;
}