每个Java对象(及其类)都有一个关联的监视器。在pthread术语中,Java监视器相当于可重入互斥和条件变量的组合。如何使用Win32 API实现类似于java的同步(监视器)?
对于锁定,Win32 API提供Mutex对象(可重入但重量级)和关键部分(不可重入但轻量级)。它还提供了其他同步结构,例如Semaphores和Events,但没有明确的条件变量概念。
如果我正在编写JVM,我怎么能使用这些Win32概念来实现Java监视器?
每个Java对象(及其类)都有一个关联的监视器。在pthread术语中,Java监视器相当于可重入互斥和条件变量的组合。如何使用Win32 API实现类似于java的同步(监视器)?
对于锁定,Win32 API提供Mutex对象(可重入但重量级)和关键部分(不可重入但轻量级)。它还提供了其他同步结构,例如Semaphores和Events,但没有明确的条件变量概念。
如果我正在编写JVM,我怎么能使用这些Win32概念来实现Java监视器?
Windows有SignalObjectAndWait(),它可以非常像监视器中的条件变量的等待。您可以使用事件(即重置)和互斥锁,然后使用PulseEvent()来执行等同于发送条件变量的信号。
在Windows上,它使用本机API而不是Java监视器来实现。 – 2008-10-07 06:57:33
我会看看。谢谢。 – 2008-10-07 10:10:52