Heim  >  Artikel  >  Backend-Entwicklung  >  Wie implementiert man Multithreading mithilfe der C++-Standardbibliothek?

Wie implementiert man Multithreading mithilfe der C++-Standardbibliothek?

WBOY
WBOYOriginal
2024-06-03 15:06:56739Durchsuche

Methoden zum Implementieren von Multithreading in der C++-Standardbibliothek: Header-Dateien einschließen: #include <thread> Thread-Objekte erstellen: std::thread t(function_or_lambda) Threads starten: t.start() warten, bis Threads abgeschlossen sind: t .join()

Wie implementiert man Multithreading mithilfe der C++-Standardbibliothek?

Verwenden Sie die C++-Standardbibliothek, um Multithreading zu implementieren.

Multithreading bezieht sich auf die gleichzeitige Ausführung mehrerer verschiedener Aufgaben in einem Programm. Dies ist ein sehr wichtiges Konzept zur Verbesserung der Programmparallelität und -reaktion Geschwindigkeit. Die C++-Standardbibliothek bietet mehrere Klassen und Funktionen, die Multithreading vereinfachen.

So implementieren Sie Multithreading mit der C++-Standardbibliothek:

  1. Header-Dateien einschließen:

    #include <thread>
  2. Thread-Objekte erstellen:
    Verwenden Sie die Klasse std::thread, um Erstellen Sie ein Thread-Objekt und geben Sie die auszuführende Funktion oder das aufrufbare Objekt an. std::thread 类来创建线程对象,并指定要执行的函数或可调用对象。

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

    t.start();
  4. 等待线程完成:
    使用 std::thread::join()

    t.join();

Starten Sie einen Thread:

Verwenden Sie die Methode std::thread::start(), um einen Thread zu starten. Diese Methode startet einen neuen Thread und führt die angegebene Funktion oder das aufrufbare Objekt aus.

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

Warten auf den Abschluss eines Threads: 🎜🎜Verwenden Sie die Methode std::thread::join(), um darauf zu warten, dass ein Thread seine Aufgabe abschließt. 🎜rrreee🎜🎜🎜Praktischer Fall: 🎜🎜🎜Berechnen Sie die Summe mehrerer Zahlen: 🎜🎜🎜Verwenden Sie Multithreading, um die Summe einer Reihe von Zahlen zu berechnen. Teilen Sie das Array in mehrere Subarrays auf und erstellen Sie mehrere Threads, um die Summe jedes Subarrays gleichzeitig zu berechnen. Schließlich wird die Summe der von jedem Thread berechneten Subarrays addiert, um die Gesamtsumme zu erhalten. 🎜rrreee

Das obige ist der detaillierte Inhalt vonWie implementiert man Multithreading mithilfe der C++-Standardbibliothek?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn