Todo el código está subido a Github y no tiene desperdicio. Lo encontré en The Change Log donde además plantean algo muy interesante para explicar cómo se ha implementado el código de Inception: el problema de la cena de los filósofos. Cada filósofo tiene un plato de fideos y un tenedor a la izquierda de su plato. Para comer los fideos son necesarios dos tenedores y cada filósofo sólo puede tomar los que están a su izquierda y derecha. Si cualquier filósofo coge un tenedor y el otro está ocupado, se quedará esperando, con el tenedor en la mano, hasta que pueda coger el otro tenedor, para luego empezar a comer.
Si todos los filósofos cogen el tenedor que está a su derecha al mismo tiempo, entonces todos se quedarán esperando eternamente, porque alguien debe liberar el tenedor que les falta. Entonces los filósofos se morirán de hambre. Este bloqueo mutuo se denomina interbloqueo o deadlock.
El problema consiste en encontrar un algoritmo que permita que los filósofos nunca se mueran de hambre.
Se trata de un problema muy conocido propuesto por Dijkstra en 1965 y que se suele usar para representar los problemas de la sincronización de procesos en un Sistema Operativo. Esto lleva a diversas soluciones como “Por turno cíclico”, “Colas de tenedores” o “El portero del comedor”.
Mas sobre este tema en: Pisito en Madrid