- 506 名前:デフォルトの名無しさん mailto:sage [2006/06/10(土) 16:56:15 ]
- こんにちわ。誘導されてきました。
セマフォの扱い方について、よろしければ教えてください。 以下が環境です。 ・HP-UX & aCC ・共有メモリを使用し、その排他制御にセマフォを使用している ・共有メモリとセマフォは専用のクラスを作成して管理している ・上記資源は複数のプロセスで使用する ・上記管理クラスのインスタンスはプロセス内に複数存在する やりたいことは以下の通りです。 ・1つのプロセス内で、同じキー値を利用するセマフォの lock を ネストさせても2回目以降の lock で固まらないようにしたい ・unlock はネスト中の実際に lock した箇所に対応したところで 実行するようにしたい void a() { void b() { CSemafore sem1; CSemafore sem2; sem1.lock(); sem2.lock(); ←ここで固まらないようにしたい b(); sem2.unlock(); sem1.unlock(); ←ここで解除したい } } セマフォのクラスインスタンスが1つの場合は lock の回数を数えるカウンタを 用意することで解決できそうなのですが、複数の(同じキー値を利用する)インスタンスが 絡んできた場合に、上手に処理する方法が思い浮かびません。 こういったことは可能なのでしょうか。ご教示頂けると嬉しく思います。 よろしくお願いいたします。
|

|