C++ 関数を使用してマルチプロセス プログラミングを実装するにはどうすればよいですか?

王林
リリース: 2024-04-26 14:21:01
オリジナル
1123 人が閲覧しました

C でのマルチプロセス プログラミングには、 ヘッダー ファイルを使用して並列実行されるプロセスの作成と管理が含まれます。プロセスを作成するには、 std::thread コンストラクターを使用し、実行する関数をそれに渡す必要があります。パラメーターは、コンストラクターを通じて追加パラメーターとして渡すことができます。実際のケースでは、複数のプロセスを使用して大きな数の分解を計算する方法を示します。

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

#C 関数を使用してマルチプロセス プログラミングを実装する

はじめに

Multi -プロセス プログラミング 1 台のコンピューター上で複数のプロセスを同時に実行できるようにするコンピューター プログラムを作成するための手法です。 C では、 ヘッダー ファイルを使用してプロセスを作成および管理できます。このチュートリアルでは、C 関数を使用してマルチプロセス プログラミングを実装する方法を学習します。

プロセスの作成

プロセスを作成するには、

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 new_process 関数を指す std::thread オブジェクト。次に、join() 関数を使用して、スレッドが完了するのを待ちます。

プロセスにパラメータを渡す

パラメータを追加パラメータとして

std::thread コンストラクターに渡すことで、プロセスにパラメータを渡すことができます。次のコード例は、整数フィールドをパラメータとして新しいプロセスに渡す方法を示しています。

int main() {
  int x = 10;
  thread t(new_process, x); 
  t.join(); 
  return 0;
}
ログイン後にコピー

new_process 関数では、次の構文を使用して、渡されたパラメータにアクセスできます。 #<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:cpp;toolbar:false;'>void new_process(int x) { cout &lt;&lt; &quot;The value of x: &quot; &lt;&lt; x &lt;&lt; endl; }</pre><div class="contentsignin">ログイン後にコピー</div></div>

実用的なケース

次は、マルチプロセス プログラミングを使用して大きな数の分解を計算する実際的なケースです。この場合、分解を処理するプロセスを作成し、メインプロセスは結果を待ちます。

#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;
}
ログイン後にコピー

結論

この記事では、C 関数を使用してマルチプロセス プログラミングを実装する方法 (プロセスの作成、パラメーターの受け渡し、実際のケースなど) を学習しました。マルチプロセス プログラミングは、アプリケーションのパフォーマンスと効率を向上させるために使用できる強力な手法です。

以上がC++ 関数を使用してマルチプロセス プログラミングを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート