Pregunta

Cada objeto Java (y su clase) tiene un monitor asociado. En términos de pthread, un monitor Java es equivalente a la combinación de un mutex reentrante y una variable de condición.

Para el bloqueo, la API de Win32 proporciona objetos Mutex (que son reentrantes pero pesados) y Secciones críticas (que no son reentrantes pero son ligeras). También proporciona otras construcciones de sincronización como Semáforos y Eventos, pero no tiene un concepto explícito de una variable de condición.

Si estuviera escribiendo una JVM, ¿cómo podría usar estos conceptos de Win32 para implementar monitores de Java?

¿Fue útil?

Otros consejos

Windows tiene SignalObjectAndWait () que se puede usar de manera muy parecida a una variable de condición de espera en un monitor. Puede usar un Evento (que es Restablecer) y un Mutex y luego usar PulseEvent () para hacer el equivalente de señalizar la variable de condición.

Le sugiero que eche un vistazo a la fuente OpenJDK para ver cómo se implementó la clase ReentrantLock.

(No lo he comprobado yo mismo, así que no estoy seguro de la respuesta).

los bloqueos util.concurrent se implementan utilizando una API nativa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top