Bei der Multiprozessprogrammierung in C++ handelt es sich um das Erstellen und Verwalten parallel laufender Prozesse mithilfe der
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
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()
函数中,我们创建了一个名为 t
的 std::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; }
main()
erstellen wir einen neuen Prozess mit dem Namen t</code ><code>std::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 denstd::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; }
new_process
können Sie mit der folgenden Syntax auf die übergebenen Parameter zugreifen: rrreeeActual 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!