- 締切済み
情報共有
今Webotsをしています。 Aロボットにa_robot.cのプログラムを走らせてGPS(x,y,z)の情報を常に取得していて、Bロボットにはb_robot.cのプログラムを走らせてGPSの情報を常に取得してる状態のものがあります。 できるだけリアルタイムにGPSの値を共有したいのですが、どうしたらいいでしょうか? Webotsに限るやりかたではないでしょうけど、違うプログラムの値を別のプログラムに移す?渡す?にはどうしたらいいのかということを知りたいです。 私が考えるのは、fprintf、fscanfで書き込み読み込みを繰り返したらできるかもと考えているのですが、もっと違うやり方でやれるのではないかと思い、質問しました。 宜しくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- arain
- ベストアンサー率27% (292/1049)
回答No.1
限定せずに「情報を共有する」という観点からのみ記載します。 a. 値に変化があったらイベント(メッセージ)を通知し、イベント(メッセージ)を受けた側はデータを取得しに行く。 b. a.の簡略版。値に変化があったらイベント(メッセージ)を通知する。ここのイベント(メッセージ)に必要な情報を含めておく。 c. 複数のプロセスからアクセスできるメモリ領域(共有メモリ)を作成し、必要に応じてアクセスする。 但し、同じ値を複数のプロセスから更新すると不整合を起こす可能性が発生するため、 「更新は一つのプロセスからのみ」もしくは排他制御により更新中は他のプロセスからのアクセスを禁止する必要がある。 a.(b.)のイベントと組み合わせることも可能(イベント通知→共有メモリからデータ取得)