2016-04-09 6 views

答えて

0

これは何らかの形で相互排除が達成できるかもしれません。この質問はかなり曖昧ですので、私の答えはコードを提供するよりも一般的になります

しかし、まずここではマルチプロセッシングが実際に必要かどうか考える必要があります。複数のプロセスを使用する主な理由は、あなたのprogranが同時に複数のタスクを実行できることです

実際には、一連のタスクをシリアライズしたいだけです。しかし、あなたがかなり新しいように見える(この仮定が間違っているとお詫びします)が、ここでは最良の解決策ではないとしても、あなたはまだマルチプロセッシングについて学びたいと思っています。

だから、最も一般的な意味で複数のプロセス、共有リソース/オブジェクト、メッセージパッシングを見る2つの基本的な方法があります。

共有リソースは、同じメモリ、ファイルまたは他のものに同時にアクセスできる複数のプロセスを持つことで動作します。この方法を使いたい場合は、forkの存在を前提としてPOSIX OSを使用していると仮定すると、POSIXの相互排他またはセマフォオブジェクトのmmapまたは共有メモリセットを調べることが望ましいでしょう。

しかし、メッセージの受け渡しを使用したい場合は、POSIXメッセージキューやUNIXソケットやパイプを調べたり、ファイルに書き込んだり読み込んだりすることさえできます。

パフォーマンスの差異が複雑で、かなり微妙で、この回答の範囲を超えているため、どのテクニックを使用するかアドバイスできません。しかし、私は両方のテクニックを見て、概念的にあなたに最もよく見えるものを見ます。

関連する問題