すれ立てるまでもない質問はここで 第76刷
■ このスレッドは過去ログ倉庫に格納されています
0116デフォルトの名無しさん
2006/06/08(木) 21:38:35以下が環境です。
・HP-UX で共有メモリを使用するプログラムを作成している
・共有メモリの排他制御にセマフォを使用している
・セマフォは専用の管理クラスを作成して使用している
・セマフォクラスの同じキー値?を管理しているインスタンスは
同一プロセス内に複数存在する
やりたいことは以下のとおりです。
・同一プロセス内で同じキー値?を管理している異なるインスタンスによる
排他制御によるデッドロック?を回避したい
たとえば以下のようなことをした場合にデッドロックにならないようにしたいのです。
void a() void b()
{ {
semafore sem1; semafore sem2;
sem1.lock(); sem2.lock(); ← ここでロックがかからないようにしたい
b(); sem2.unlock();
sem1.unlock(); }
}
static な配列か何かを作成して、そこにセマフォのキー値と、そのキー値を利用した
lock の回数を保存して、0 → 1 の時にだけ lock、1 → 0 の時にだけ unlock というくらいしか
方法が思い浮かばないのですが、良い方法はないでしょうか。
出来たら便利と思い方法を考えていたのですが、この手のことの経験があまりなく良い方法が
浮かびません。ご教示頂ければ幸いです。
■ このスレッドは過去ログ倉庫に格納されています