- 513 名前:506 mailto:sage [2006/06/10(土) 21:59:59 ]
- >>511
ご返信をありがとうございます。 これは「多重セマフォ」の解説(使用例の項)でしょうか? 残念ですが、今回の件は同時参照を全て止める必要があるため、初期値を大きくすることに よって解決とすることは出来ないと思います。情報をありがとうございました。 >>512 ご返信をありがとうございます。 不要と判断していました。たとえばですが。 共有メモリにある情報をまとめたテーブルがあるとします。 関数 SetData01() はこのテーブルの特定のデータを変更します。 同様に SetData02() など複数の関数があり、それぞれ関数内部でデータを変更するための (受取手にとってわかりやすい形から格納に適した形への変換などの)処理を実施しています。 これら関数には対応する GetData**() も存在し、変更/参照時には共に排他制御(sem2)を実施します。 更に上記個別の値をまとめて取り扱う関数として SetGroupData() なる関数があり、 先の個別にデータを変更/参照する関数を内部で使用します。 この関数でのデータの変更時には、関連する全てのデータ更新が終了するまではデータ間での 矛盾発生を防ぐために他からのデータ参照を止めたい場合があるため、この関数の実行時にも 排他(sem1)を掛けたいと考えています。 回避策として、SetGroupData() で SetData01() などを呼ばずに自前で個別データの 設定を行う方法もあるのですが、少々煩雑な処理をするところもあるため、可能であれば SetData01() などを利用する形に出来ればと思っています。 そのままのことは書けないため、説明が足りないところもあるかと思いますがご容赦ください。
|

|