En el caso de usar soluciones por software,
considérese que cualquiera de las soluciones vistas
en teoría
es para dos procesos y habrá que generalizarla.
Una posible generalización para el caso de los
cuatro hilos (gatos y ratones) si queremos una
zona de exclusión mutua para los cuatro es limitarla
por dos secciones críticas anidadas, la exterior
para separar ratones y gatos y la interior para
separar primos entre sí:
<<SECCIÓN CRÍTICA PARA GATOS Y RATONES-Comienzo>>
/* Aquí hay o gatos o ratones, pero no los dos juntos */
<<SECCIÓN CRÍTICA PARA PRIMOS-Comienzo>>
/* Aquí no puede haber primos juntos, pero como fuera
no puede haber ratones y gatos juntos, aquí no puede
haber más de un hilo cada vez */
...
<<SECCIÓN CRÍTICA PARA PRIMOS-Fin>>
<<SECCIÓN CRÍTICA PARA GATOS Y RATONES-Fin>>
Esta solución pudiera producir inanición en algún
caso, pero no afecta al funcionamiento del programa.
Las secciones críticas se refieren a las obtenidas
mediante un algoritmo de Dekker o Peterson.