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

Comment implémenter une programmation multi-processus à l'aide des fonctions C++ ?

王林
Libérer: 2024-04-26 14:21:01
original
1122 Les gens l'ont consulté

La programmation multiprocessus en C++ implique la création et la gestion de processus exécutés en parallèle à l'aide du fichier d'en-tête La création d'un processus nécessite d'utiliser le constructeur std::thread et de lui transmettre une fonction à exécuter. Les paramètres peuvent être transmis en tant que paramètres supplémentaires via le constructeur. Un cas pratique démontre l'utilisation de plusieurs processus pour calculer la décomposition de grands nombres.

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

Utilisation des fonctions C++ pour implémenter une programmation multi-processus

Introduction

La programmation multi-processus est une technique d'écriture de programmes informatiques qui permet à plusieurs processus de s'exécuter simultanément sur un seul ordinateur. En C++, vous créez et gérez des processus à l'aide du fichier d'en-tête Ce didacticiel vous guidera dans l'apprentissage de l'utilisation des fonctions C++ pour la programmation multi-processus.

Création d'un processus

Pour créer un processus, vous devez utiliser le constructeur std::thread. Le constructeur accepte en argument un pointeur vers une fonction qui sera exécutée dans le nouveau processus. L'exemple de code suivant montre comment créer un nouveau processus qui imprime un message, se met en veille pendant 5 secondes, puis se termine : 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;
}
Copier après la connexion

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

传递参数到进程

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

int main() {
  int x = 10;
  thread t(new_process, x); 
  t.join(); 
  return 0;
}
Copier après la connexion

new_process

void new_process(int x) {
  cout << "The value of x: " << x << endl;
}
Copier après la connexion

Dans la fonction main(), nous créons un nouveau processus appelé t</code ><code>std::thread, qui pointe vers la fonction new_process. Nous utilisons ensuite la fonction join() pour attendre la fin du thread.

Passer des paramètres au processus

Vous pouvez transmettre des paramètres au processus en les passant comme paramètres supplémentaires au constructeur std::thread. L'exemple de code suivant montre comment passer un champ entier en tant que paramètre à un nouveau processus :

#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;
}
Copier après la connexion
Dans la fonction new_process, vous pouvez accéder aux paramètres passés en utilisant la syntaxe suivante : rrreee

Actual cas

🎜🎜Ci-dessous Il s'agit d'un cas pratique d'utilisation de la programmation multi-processus pour calculer la décomposition de grands nombres. Dans ce cas, nous créerons un processus pour gérer la décomposition et le processus principal attendra les résultats. 🎜rrreee🎜🎜Conclusion🎜🎜🎜Dans cet article, vous avez appris à utiliser les fonctions C++ pour implémenter une programmation multi-processus, y compris la création de processus, la transmission de paramètres et un cas pratique. La programmation multi-processus est une technique puissante qui peut être utilisée pour améliorer les performances et l’efficacité de vos applications. 🎜

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