• ベストアンサー

共有メモリをつかうときに・・

・共有メモリに入れるデータ(標準入力)をgetchar関数で得ることの問題点ってなんでしょうか。 共有メモリを使う上で注意することは、参照したいデータが他のプロセスによって変えられたりしないこと・・だと習ったのですがそこまではいいでしょうか。 となると、一文字一文字読み込んでいると、その途中でデータが更新されてしまう恐れがある・・ということですかね??

質問者が選んだベストアンサー

  • ベストアンサー
  • zwi
  • ベストアンサー率56% (730/1282)
回答No.1

共有メモリを使うと言うことは、違うプログラム間でメモリを共有すると言うことですが、スレッドの話じゃないですよね? getcharで標準入力されるデータをプログラム間で共有するプログラムの設計自体が不思議な気がするのですが、この設計を採用した理由は何ですか? >一文字一文字読み込んでいると、その途中でデータが更新されてしまう恐れがある・・ということですかね?? 二つのプログラムから同時に入力を受け付けたら必ずそうなります。 普通はメモリを分けるか、同期処理でタイミングを制御します。 あるいはプロセス間通信でデータを受け渡すほうが共有メモリより簡単ですよ。

noname#46996
質問者

お礼

プログラムはサンプルで資料のままなのですが; プロセス間通信で共有メモリを使用しています。 同じキーを作成して、共有メモリを新しくつくり、データを受け渡しするかんじです。 とりあえず問題点が間違いじゃなくてよかったです。 回答どうもありがとうございます。

その他の回答 (1)

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.2

共有メモリをプロセス間で使う場合は、大量データを短時間で受け渡したい場合に使います。タイミングを制御するため同期処理は必須になります。 一般にプロセス間通信は、Windowsであればメッセージ、パイプ、メールスロットなど使います。それほど大規模でないデータの受け渡しは、こちらの方が簡単です。 使い方を見ると、プロセス間通信で十分な気がしますけど。

noname#46996
質問者

お礼

ありがとうございます。 やはり同期が必要なんですね。 分りました。