Estoy leyendo el libro Java Concurrency in Practice. En el capítulo 15, están hablando de los algoritmos no bloqueantes y el método compare-and-swap (CAS).Concurrencia de Java: CAS vs Locking
Está escrito que CAS funciona mucho mejor que los métodos de bloqueo. Quiero preguntarle a las personas que ya trabajaron con estos dos conceptos y me gustaría saber cuándo está prefiriendo cuál de estos conceptos? ¿Es realmente mucho más rápido?
Para mí, el uso de cerraduras es mucho más claro y más fácil de entender y tal vez incluso mejor para mantener (por favor, corríjanme si me equivoco). ¿Deberíamos centrarnos realmente en crear nuestro código simultáneo relacionado con CAS que bloqueos para obtener un mejor impulso de rendimiento o la sostenibilidad es más importante?
Sé que tal vez no haya una regla estricta sobre cuándo usar qué. Pero me gustaría escuchar algunas opiniones, experiencias con el nuevo concepto de CAS.
Acepto, poniendo énfasis en * el gasto de calcular un nuevo valor *. A menudo es tan grande que hace que la estrategia sin bloqueo pierda a la basada en bloqueo. –