Heim  >  Artikel  >  Backend-Entwicklung  >  Wie implementiert man Multiprozessprogrammierung mithilfe von C++-Funktionen?

Wie implementiert man Multiprozessprogrammierung mithilfe von C++-Funktionen?

王林
王林Original
2024-04-26 14:21:011052Durchsuche

Bei der Multiprozessprogrammierung in C++ handelt es sich um das Erstellen und Verwalten parallel laufender Prozesse mithilfe der 61fe42cd48946e53c78c0e2bbfbc7b04-Headerdatei. Um einen Prozess zu erstellen, muss der Konstruktor std::thread verwendet und ihm eine auszuführende Funktion übergeben werden. Parameter können als zusätzliche Parameter über den Konstruktor übergeben werden. Ein praktischer Fall zeigt die Verwendung mehrerer Prozesse zur Berechnung der Zerlegung großer Zahlen.

如何使用 C++ 函数实现多进程编程?

Verwendung von C++-Funktionen zur Implementierung der Multiprozessprogrammierung

Einführung

Multiprozessprogrammierung ist eine Technik zum Schreiben von Computerprogrammen, die die gleichzeitige Ausführung mehrerer Prozesse auf einem einzelnen Computer ermöglicht. In C++ erstellen und verwalten Sie Prozesse mithilfe der Header-Datei 61fe42cd48946e53c78c0e2bbfbc7b04 In diesem Tutorial erfahren Sie, wie Sie C++-Funktionen für die Multiprozessprogrammierung verwenden.

Erstellen eines Prozesses

Um einen Prozess zu erstellen, müssen Sie den Konstruktor std::thread verwenden. Der Konstruktor akzeptiert als Argument einen Zeiger auf eine Funktion, die im neuen Prozess ausgeführt wird. Das folgende Codebeispiel zeigt, wie man einen neuen Prozess erstellt, der eine Nachricht druckt, 5 Sekunden lang schläft und dann beendet wird: std::thread 构造函数。该构造函数接受一个函数指针作为参数,该函数将在新进程中运行。以下代码示例演示如何创建一个打印消息、睡眠 5 秒,然后退出的新进程:

#include <thread>
#include <iostream>
using namespace std;

void new_process() {
  cout << "Hello from new process!" << endl;
  this_thread::sleep_for(chrono::seconds(5));
}

int main() {
  thread t(new_process);  
  t.join();  
  return 0;
}

main() 函数中,我们创建了一个名为 tstd::thread 对象,它指向 new_process 函数。然后,我们使用join() 函数等待该线程完成。

传递参数到进程

您可以将参数传递给进程,方法是将它们作为 std::thread 构造函数的附加参数。以下代码示例演示如何将整数字段作为参数传递给新进程:

int main() {
  int x = 10;
  thread t(new_process, x); 
  t.join(); 
  return 0;
}

new_process

void new_process(int x) {
  cout << "The value of x: " << x << endl;
}

In der Funktion main() erstellen wir einen neuen Prozess mit dem Namen tstd::thread-Objekt, das auf die Funktion new_process verweist. Anschließend verwenden wir die Funktion join(), um auf den Abschluss des Threads zu warten.

Parameter an den Prozess übergeben

Sie können Parameter an den Prozess übergeben, indem Sie sie als zusätzliche Parameter an den std::thread-Konstruktor übergeben. Das folgende Codebeispiel zeigt, wie ein Ganzzahlfeld als Parameter an einen neuen Prozess übergeben wird:

#include <thread>
#include <vector>
#include <algorithm>

using namespace std;

vector<int> factors;

void find_factors(long long n, int start, int end) {
  for (int i = start; i < end; ++i) {
    if (n % i == 0) {
      factors.push_back(i);
    }
  }
}

int main() {
  long long n = 12345678910;
  int num_threads = 4;
  int range = n / num_threads;

  // 创建并运行线程
  vector<thread> threads;
  for (int i = 0; i < num_threads; ++i) {
    threads.push_back(thread(find_factors, n, i * range, (i + 1) * range));
  }

  // 等待线程完成
  for (auto& t : threads) {
    t.join();
  }

  //打印结果
  for (int factor : factors) {
    cout << factor << endl;
  }

  return 0;
}
In der Funktion new_process können Sie mit der folgenden Syntax auf die übergebenen Parameter zugreifen: rrreee

Actual Fall

🎜🎜Unten Es handelt sich um einen praktischen Fall der Verwendung der Multiprozessprogrammierung zur Berechnung der Zerlegung großer Zahlen. In diesem Fall erstellen wir einen Prozess zur Durchführung der Zerlegung und der Hauptprozess wartet auf die Ergebnisse. 🎜rrreee🎜🎜Fazit🎜🎜🎜In diesem Artikel haben Sie gelernt, wie Sie C++-Funktionen verwenden, um die Multiprozessprogrammierung zu implementieren, einschließlich der Erstellung von Prozessen, der Übergabe von Parametern und einem praktischen Fall. Die Multiprozessprogrammierung ist eine leistungsstarke Technik, mit der Sie die Leistung und Effizienz Ihrer Anwendungen verbessern können. 🎜

Das obige ist der detaillierte Inhalt vonWie implementiert man Multiprozessprogrammierung mithilfe von C++-Funktionen?. 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