C ++リファレンス之スレッドクラス

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;
}

おすすめ

転載: blog.csdn.net/VOlsenBerg/article/details/103542484