Maison > développement back-end > C++ > le corps du texte

Comment la bibliothèque de fonctions C++ crée et utilise le multithreading ?

WBOY
Libérer: 2024-04-18 14:39:02
original
969 Les gens l'ont consulté

Réponse : en C++, vous pouvez utiliser la bibliothèque de fonctions std::thread pour créer et utiliser plusieurs threads afin d'implémenter une programmation simultanée. Description détaillée : utilisez std::thread pour créer un nouveau thread et exécuter le code spécifié dans le thread enfant. Utilisez des mécanismes de synchronisation tels que des mutex et des variables de condition pour garantir un accès sécurisé aux données partagées. Un cas pratique montre le tri de tableaux parallèles, dans lequel plusieurs threads trient un sous-ensemble du tableau en même temps, améliorant ainsi l'efficacité.

C++ 函数库如何创建和使用多线程?

Bibliothèque de fonctions C++ : création et utilisation du multithreading

Introduction

Le multiplethreading est une technique de programmation simultanée qui permet d'effectuer plusieurs tâches en même temps. En C++, vous pouvez facilement créer et utiliser plusieurs threads en utilisant des bibliothèques telles que std::thread. std::thread)轻松创建和使用多线程。

创建线程

要创建线程,可以使用 std::thread

Créer un fil de discussion

Pour créer un fil de discussion, vous pouvez utiliser std::thread Classe :

#include <thread>

using namespace std;

void thread_function() {
  // 要在子线程中执行的代码
}

int main() {
  thread th(thread_function); // 创建新线程
  th.join(); // 等待子线程完成
  return 0;
}
Copier après la connexion

Synchroniser les fils de discussion

Pour garantir que plusieurs threads accèdent en toute sécurité aux données partagées, vous peut utiliser des mécanismes de synchronisation tels que des mutex et des variables de condition :

#include <mutex>
#include <condition_variable>

using namespace std;

mutex mtx; // 互斥锁
condition_variable cv; // 条件变量

int shared_data = 0; // 共享数据

void thread_function() {
  while (true) {
    mtx.lock();
    // 对共享数据进行操作
    mtx.unlock();

    // 通知等待条件变量的线程
    cv.notify_all();
  }
}

int main() {
  thread th(thread_function); // 创建线程

  // 等待条件变量被通知
  unique_lock<mutex> lock(mtx);
  cv.wait(lock);

  // 对共享数据进行操作

  th.join(); // 等待子线程完成
  return 0;
}
Copier après la connexion

🎜 Cas pratique : Tri de tableaux parallèles 🎜🎜🎜 On peut utiliser le multi-threading pour trier des tableaux en parallèle : 🎜
#include <thread>
#include <vector>
#include <algorithm>

using namespace std;

void merge(vector<int>& arr, int l, int m, int r) {
  // 对两个子数组进行归并排序
}

void merge_sort(vector<int>& arr, int l, int r) {
  if (l < r) {
    int m = l + (r - l) / 2;
    thread th1(merge_sort, ref(arr), l, m);
    thread th2(merge_sort, ref(arr), m + 1, r);
    th1.join();
    th2.join();
    merge(arr, l, m, r);
  }
}

int main() {
  vector<int> arr = {3, 1, 4, 2, 5};
  merge_sort(arr, 0, arr.size() - 1);
  return 0;
}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!