Anteriormente hice esta pregunta en Programmers.SE , sin éxito.
Estoy buscando recursos de aprendizaje por escrito sobre cómo diseñar estructuras de datos concurrentes. Estoy más interesado en el proceso de diseño (por ejemplo, identificar los invariantes correctos) que en el producto final (una lista completa de códigos).
Para un ejemplo concreto: Realmente disfruté el libro de Chris Okasaki "Estructuras de datos puramente funcionales", porque es más que una referencia: guía al lector a través del diseño de sus estructuras de datos y algoritmos. A menudo, el libro motiva un diseño complicado o no obvio al dar primero una versión más ingenua, y solo luego refinarlo hasta lograr la complejidad de tiempo deseada (ya sea en el peor de los casos o amortizada). Este es el tipo de cosas que estoy buscando.
Entonces:
¿Qué técnicas o heurísticas existen para diseñar estructuras de datos concurrentes?
¿Hay libros, documentos, publicaciones de blog, tutoriales, etc. que expliquen estas técnicas y heurísticas?