のように切り替えることはできますか?たとえばforkを使用して4 player.cを子として呼び出し、ボードゲームを作成したいと思います。そのプレイヤーCを一時停止し、別のプレイヤーに切り替えると、誰かがゲームに勝つまで、このように繰り返されます。私はフォーク()Cによって呼び出されたプロセスを、Switch player
1
A
答えて
0
これは何らかの形で相互排除が達成できるかもしれません。この質問はかなり曖昧ですので、私の答えはコードを提供するよりも一般的になります
しかし、まずここではマルチプロセッシングが実際に必要かどうか考える必要があります。複数のプロセスを使用する主な理由は、あなたのprogranが同時に複数のタスクを実行できることです。
実際には、一連のタスクをシリアライズしたいだけです。しかし、あなたがかなり新しいように見える(この仮定が間違っているとお詫びします)が、ここでは最良の解決策ではないとしても、あなたはまだマルチプロセッシングについて学びたいと思っています。
だから、最も一般的な意味で複数のプロセス、共有リソース/オブジェクト、メッセージパッシングを見る2つの基本的な方法があります。
共有リソースは、同じメモリ、ファイルまたは他のものに同時にアクセスできる複数のプロセスを持つことで動作します。この方法を使いたい場合は、forkの存在を前提としてPOSIX OSを使用していると仮定すると、POSIXの相互排他またはセマフォオブジェクトのmmapまたは共有メモリセットを調べることが望ましいでしょう。
しかし、メッセージの受け渡しを使用したい場合は、POSIXメッセージキューやUNIXソケットやパイプを調べたり、ファイルに書き込んだり読み込んだりすることさえできます。
パフォーマンスの差異が複雑で、かなり微妙で、この回答の範囲を超えているため、どのテクニックを使用するかアドバイスできません。しかし、私は両方のテクニックを見て、概念的にあなたに最もよく見えるものを見ます。
関連する問題
- 1. C子プロセスでexecによって呼び出されたプロセスのstdoutをファイルにリダイレクト
- 2. `ref`によって呼び出されたinput.focus()は` onBlur`イベントを呼び出す
- 3. C#WPF Windows Media Playerを呼び出す
- 4. NoSuchMethodErrorがloader.loadClass()の呼び出しによって呼び出されました。
- 5. SWITCHを使用して、どのボタンが押されたかによって異なるインテントを呼び出す
- 6. フォークされたプロセスのタイムアウト
- 7. backgroundworkerによって呼び出されたメソッド内からのプロセスの更新C#
- 8. メソッドの呼び出し元をトラッキングする[呼び出しによって呼び出された]
- 9. 呼び出された(ディスパッチャを介して)呼び出し、または直接呼び出された呼び出しを同期する
- 10. システムは、C信号に呼び出し、フォーク
- 11. AppWillTerminateによって呼び出された関数のクラッシュ
- 12. evalがbashスクリプトファイルによって呼び出されました
- 13. __getattribute__によって返されたPython呼び出しメソッド
- 14. フォークされたプロセス出力をNULLにリダイレクト
- 15. xmbc Player onPlayBackEndedが呼び出されていない
- 16. プロファイリング; ippvmGetLibVersion:私はそれを呼び出さなかった
- 17. プロセスの再起動なしでプロセスによって呼び出されるdllのメソッドを変更します。
- 18. クラスdraw()メソッドは直接呼び出されたときに機能しますが、別のオブジェクトによって呼び出されるとクラッシュします
- 19. run()はThread.start()メソッドによって呼び出されません
- 20. Android - onGlobalLayoutはViewTreeObserverによって呼び出されません
- 21. java Runtime.exec()によって呼び出された同時実行可能なプロセス数はいくつですか?
- 22. フォークによって生成されたプロセス孫を待つ/または終了させる
- 23. C#/ XSLT - ドキュメント()関数によって呼び出されていないXmlResolverの
- 24. C#DLLによって呼び出されるEXE関数を公開する
- 25. プロセスから呼び出されたMSIインストーラの出力方法
- 26. 誰かがSSHを使ってログインするたびにプロセスを呼び出す
- 27. Python - 別のライブラリによって呼び出された、別のライブラリによって呼び出されたソケットライブラリの関数の置き換え
- 28. .External2()によって呼び出されたコードを見つける方法は?
- 29. js_of_ocamlによって生成された関数を呼び出す方法は?
- 30. PowerMockito:コンストラクタによって呼び出されたメソッドをモックする方法は?