Win32 APIを使用してjavaのような同期(モニター)を実装するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/174423

質問

各Javaオブジェクト(およびそのクラス)にはモニターが関連付けられています。 pthreadの用語では、Javaモニターはリエントラントmutexと条件変数の組み合わせに相当します。

ロックのために、Win32 APIはMutexオブジェクト(リエントラントではあるが重い)とクリティカルセクション(リエントラントではないが軽量)を提供します。また、セマフォやイベントなどの他の同期構造も提供しますが、条件変数の明示的な概念はありません。

JVMを記述している場合、これらのWin32の概念を使用してJavaモニターを実装するにはどうすればよいですか?

役に立ちましたか?

他のヒント

WindowsにはSignalObjectAndWait()があり、これはモニターの条件変数の待機と非常によく似ています。 Event(つまりReset)とMutexを使用してから、PulseEvent()を使用して、条件変数のシグナリングと同等の操作を実行できます。

OpenJDK ソースを見て、クラスReentrantLockの実装方法を確認することをお勧めします。

(自分でチェックしていないので、答えがわからない)

util.concurrentロックは、ネイティブAPIを使用して実装されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top