Estoy pensando aquí: si tiene 2 subprocesos ejecutando operaciones FAST que deben sincronizarse, ¿no es un enfoque no bloqueante más rápido/mejor que un enfoque de bloqueo/cambio de contexto?Cerraduras de bloqueo frente a cerraduras sin bloqueo
Por no bloqueante quiero decir algo como:
while (true) { si (checkAndGetTheLock)() break; }
Lo único que se me ocurre es la inanición (con la CPU quemada) si tiene demasiados hilos dando vueltas alrededor de la cerradura.
¿Cómo puedo equilibrar un enfoque con el otro?
¿Cuántas operaciones de bloqueo va a hacer por núcleo de CPU por segundo? – usr
AFAIK, la JVM hace esta optimización por usted si no hay contención en el bloqueo (que debería ser el caso si la operación es rápida) –
@JB Nizet: Creo que tiene que tomar esa decisión usted mismo mediante el uso de ReentrantLock sincronizado. – chrisapotek