Maison >développement back-end >C++ >Comment implémenter le multithreading à l'aide de la bibliothèque standard C++ ?

Comment implémenter le multithreading à l'aide de la bibliothèque standard C++ ?

WBOY
WBOYoriginal
2024-06-03 15:06:56750parcourir

Méthodes pour implémenter le multi-threading dans la bibliothèque standard C++ : inclure les fichiers d'en-tête : #include <thread> créer des objets de thread : std::thread t(function_or_lambda) démarrer les threads : t.start() attendre la fin des threads : t .join()

Comment implémenter le multithreading à laide de la bibliothèque standard C++ ?

Utilisez la bibliothèque standard C++ pour implémenter le multi-threading

Le multi-threading fait référence à l'exécution de plusieurs tâches différentes en même temps dans un programme. Il s'agit d'un concept très important pour améliorer la simultanéité et la réponse du programme. vitesse. La bibliothèque standard C++ fournit plusieurs classes et fonctions qui facilitent le multithreading.

Voici comment implémenter le multithreading à l'aide de la bibliothèque standard C++ :

  1. Inclure les fichiers d'en-tête :

    #include <thread>
  2. Créer des objets thread :
    Utilisez la classe std::thread pour crée un objet Thread et spécifie la fonction ou l'objet appelable à exécuter. std::thread 类来创建线程对象,并指定要执行的函数或可调用对象。

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

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

    t.join();

Démarrer un fil de discussion :

Utilisez la méthode std::thread::start() pour démarrer un fil de discussion. Cette méthode démarrera un nouveau thread et exécutera la fonction spécifiée ou l'objet appelable.

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

Attente de la fin d'un thread : 🎜🎜Utilisez la méthode std::thread::join() pour attendre qu'un thread termine sa tâche. 🎜rrreee🎜🎜🎜Cas pratique : 🎜🎜🎜Calculer la somme de plusieurs nombres : 🎜🎜🎜Utilisez le multi-threading pour calculer la somme d'un ensemble de nombres. Divisez le tableau en sous-tableaux et créez plusieurs threads pour calculer simultanément la somme de chaque sous-tableau. Enfin, la somme des sous-tableaux calculés par chaque thread est ajoutée pour obtenir le total. 🎜rrreee

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn