首頁  >  文章  >  後端開發  >  如何使用C++的標準函式庫實作多執行緒?

如何使用C++的標準函式庫實作多執行緒?

WBOY
WBOY原創
2024-06-03 15:06:56684瀏覽

C++ 標準函式庫中實作多執行緒的方法:包含頭檔:#include <thread>建立執行緒物件:std::thread t(function_or_lambda)啟動執行緒:t.start()等待執行緒完成:t.join ()

如何使用C++的標準函式庫實作多執行緒?

使用C++ 標準函式庫實作多執行緒

#多執行緒是指在一個程式中同時執行多個不同的任務,這是對於提高程序並發性和反應速度非常重要的概念。 C++ 標準函式庫提供了幾個類別和函數,可以輕鬆實作多執行緒。

以下是如何使用C++ 標準函式庫實作多執行緒:

  1. #包含頭檔:

    #include <thread>
  2. 建立線程對象:
    使用std::thread 類別來建立線程對象,並指定要執行的函數或可呼叫對象。

    std::thread t(function_or_lambda);
  3. 啟動執行緒:
    使用 std::thread::start() 方法來啟動執行緒。此方法將開始一個新的線程,並執行指定的函數或可呼叫物件。

    t.start();
  4. 等待執行緒完成:
    使用 std::thread::join() 方法來等待執行緒完成其任務。

    t.join();

實戰案例:

計算多個數的總和:

使用多執行緒來計算一組數的總和。將陣列分成多個子數組,然後建立多個執行緒來同時計算每個子數組的總和。最後將各個執行緒計算出的子數組總和相加即可得到總和。

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

以上是如何使用C++的標準函式庫實作多執行緒?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn