Heim  >  Artikel  >  Backend-Entwicklung  >  Wie erstelle und verwende ich Multithreading in einer C++-Bibliothek?

Wie erstelle und verwende ich Multithreading in einer C++-Bibliothek?

WBOY
WBOYOriginal
2024-04-18 14:39:02997Durchsuche

Antwort: In C++ können Sie die Funktionsbibliothek std::thread verwenden, um mehrere Threads zu erstellen und zu verwenden, um gleichzeitige Programmierung zu implementieren. Detaillierte Beschreibung: Verwenden Sie std::thread, um einen neuen Thread zu erstellen und den angegebenen Code im untergeordneten Thread auszuführen. Verwenden Sie Synchronisierungsmechanismen wie Mutexe und Bedingungsvariablen, um einen threadsicheren Zugriff auf gemeinsam genutzte Daten sicherzustellen. Ein praktischer Fall zeigt die parallele Array-Sortierung, bei der mehrere Threads gleichzeitig eine Teilmenge des Arrays sortieren und so die Effizienz verbessern.

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

C++-Funktionsbibliothek: Erstellen und Verwenden von Multithreading

Einführung

Multiplethreading ist eine gleichzeitige Programmiertechnik, die die gleichzeitige Ausführung mehrerer Aufgaben ermöglicht. In C++ können Sie problemlos mehrere Threads erstellen und verwenden, indem Sie Bibliotheken wie std::thread verwenden. std::thread)轻松创建和使用多线程。

创建线程

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

Erstellen Sie einen Thread

Um einen Thread zu erstellen, können Sie std::thread verwenden. Klasse:

#include <thread>

using namespace std;

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

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

Threads synchronisieren

Um sicherzustellen, dass mehrere Threads sicher auf gemeinsam genutzte Daten zugreifen, können Sie kann Synchronisationsmechanismen wie Mutex-Sperren und Bedingungsvariablen verwenden:

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

🎜 Praktischer Fall: Parallele Array-Sortierung 🎜🎜🎜 Wir können Multithreading verwenden, um Arrays parallel zu sortieren: 🎜
#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;
}

Das obige ist der detaillierte Inhalt vonWie erstelle und verwende ich Multithreading in einer C++-Bibliothek?. 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