C で非常に単純なミューテックス (ロック) を実装しようとして、少し混乱しています。ミューテックスはバイナリ セマフォに似ていることを理解していますが、ミューテックスは、ロックを解放するスレッドが最近それを取得したのと同じスレッド。所有権を追跡する方法について混乱していますか?
これは私がこれまでに持っているものです。まだ完成しておらず、非常に単純であると想定されていることに注意してください(ユニプロセッサ、ミューテックスでの再帰なし、相互排除方式としての割り込みの無効化など)。
struct mutex {
char *mutexName;
volatile int inUse;
};
別のメンバー変数、つまりwhoIsOwnerを追加する必要があると思いますが、そこに何を格納するかについてはちょっと混乱しています。ロックを呼び出そうとしているスレッドを一意に識別できるものでなければならないと思いますか? これは正しいです?
「char *threadName」メンバー変数を持つスレッド構造を (他の変数と共に) 配置していますが、mutex 実装内からこれにアクセスする方法がわかりません。
ポインタ/ヒント/アイデアをいただければ幸いです。