ホームページ > バックエンド開発 > C++ > C++ 標準ライブラリを使用してマルチスレッドを実装するにはどうすればよいですか?

C++ 標準ライブラリを使用してマルチスレッドを実装するにはどうすればよいですか?

WBOY
リリース: 2024-06-03 15:06:56
オリジナル
758 人が閲覧しました

C++ 標準ライブラリでマルチスレッドを実装するメソッド: インクルード ヘッダー ファイル: #include <thread> スレッド オブジェクトを作成: std::thread t(function_or_lambda) スレッドを開始: t.start() スレッドが完了するまで待機: t .join()

C++ 標準ライブラリを使用してマルチスレッドを実装するにはどうすればよいですか?

C++ 標準ライブラリを使用してマルチスレッドを実装します

マルチスレッドとは、プログラム内で複数の異なるタスクを同時に実行することを指します。これは、プログラムの同時実行性と応答性を向上させるための非常に重要な概念です。スピード。 C++ 標準ライブラリには、マルチスレッドを容易にするいくつかのクラスと関数が用意されています。

C++ 標準ライブラリを使用してマルチスレッドを実装する方法は次のとおりです:

  1. ヘッダー ファイルをインクルードする:

    #include <thread>
    ログイン後にコピー
  2. スレッド オブジェクトを作成する:
    std::thread クラスを使用して、 Thread オブジェクトを作成し、実行する関数または呼び出し可能オブジェクトを指定します。 std::thread 类来创建线程对象,并指定要执行的函数或可调用对象。

    std::thread t(function_or_lambda);
    ログイン後にコピー
  3. 启动线程:
    使用 std::thread::start() 方法来启动线程。此方法将开始一个新的线程,并执行指定的函数或可调用对象。

    t.start();
    ログイン後にコピー
  4. 等待线程完成:
    使用 std::thread::join()

    t.join();
    ログイン後にコピー

スレッドを開始する:

スレッドを開始するには、std::thread::start() メソッドを使用します。このメソッドは、新しいスレッドを開始し、指定された関数または呼び出し可能なオブジェクトを実行します。

#include <thread>
#include 

using namespace std;

vector numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int num_threads = 4;

int sum(const vector& arr, int start, int end) {
  int sum = 0;
  for (int i = start; i < end; i++) {
    sum += arr[i];
  }
  return sum;
}

int main() {
  // 创建线程数组
  vector threads(num_threads);

  // 计算每个线程负责的范围
  int chunk_size = numbers.size() / num_threads;
  vector partial_sums(num_threads);

  for (int i = 0; i < num_threads; i++) {
    int start = i * chunk_size;
    int end = min((i + 1) * chunk_size, numbers.size());
    
    // 创建线程并计算部分和
    threads[i] = thread(sum, ref(numbers), start, end);
  }

  // 等待所有线程完成
  for (int i = 0; i < num_threads; i++) {
    threads[i].join();
  }

  // 计算总体和
  int total_sum = 0;
  for (int partial_sum : partial_sums) {
    total_sum += partial_sum;
  }

  cout << "Total sum: " << total_sum << endl;

  return 0;
}
ログイン後にコピー

スレッドの完了を待機しています: 🎜🎜 std::thread::join() メソッドを使用して、スレッドがタスクを完了するのを待ちます。 🎜rrreee🎜🎜🎜実際のケース: 🎜🎜🎜複数の数値の合計を計算する: 🎜🎜🎜 マルチスレッドを使用して、一連の数値の合計を計算します。配列をサブ配列に分割し、各サブ配列の合計を同時に計算する複数のスレッドを作成します。最後に、各スレッドによって計算された部分配列の合計を加算して、合計を取得します。 🎜りー

以上がC++ 標準ライブラリを使用してマルチスレッドを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート