Cinco Filósofos se sientan a cenar, en la mesa hay 5 platos, y 5 cubierto, la condición es que, cada filosofo tiene que comer con 2 cubiertos, caso contrario, no podrá hacerlo, allí nace el problema, existen muchas posibilidades, si 2 filósofos que están adyacentes van a por el mismo cubierto, se dará una competencia, y solo uno comerá(Fracaso de un proceso), si todos cogen el tenedor del mismo lado a la vez, ninguno podrá comer, produciendo un interbloqueo(Fracaso de todos los procesos). Las soluciones que se presentan deben ser cuidadosamente analizadas y usadas según sea el caso, por ejemplo, por turno cíclico; que cada uno coma a su turno individualmente (corriendo el riesgo de que pase mucho tiempo), portero del comedor; Restringir el número de participantes, cola de tenedores: Si hay necesidad de comer, se realiza una cola, para esperar su segundo tenedor, al finalizar, deja libres sus 2 tenedores, y así sucesivamente, siendo esta ultima la mas optima para solucionar el problema y que ninguno se vea perjudicado, Hace una metáfora a la sincronización de procesos. En todos estos casos los procesos se realizarían uno a la vez y no todos al mismo tiempo. Fumadores Compulsivos El problema tiene involucrado a 1 agente y 3 fumadores, lo que necesitan para fumar son tabaco, papel y fósforo, el agente tiene infinidad de suministros de los 3 elementos, mientras que los fumadores tiene infinitos elementos pero solo de un suministro, el agente elige al azar 2 ingredientes cualesquiera de los que tiene, y el fumador que tiene el ultimo ingrediente que falta, junta estos 3 para poder fumar. Referencia a un Sistema Operativo, un sistema operativo que asigna recursos, y los fumadores representan aplicaciones que necesitan recursos. Se desea con este asegurar los elementos necesarios para que una aplicación funcione para llamarla, caso contrario se debe evitar abrir procesos que no funcionaran por falta de recursos. Problema Productor – Consumidor Este problema se refiere a la repartición del trabajo realizado por programas, bajo la idea de hilos este se puede dividir en dos clases, los productores quienes crean un objeto evento, envían al buffer, y los consumidores que los procesan y luego los eliminan (son quienes manejan los eventos). En el proceso van a tender a tener restricciones para el correcto funcionamiento, el buffer debe permitir por lapsos el acceso a subprocesos, el buffer debe ser accesible al consumidor solo cuando tiene objetos evento. En la solución podemos crear restricciones de acceso al buffer para el productor y consumidor, controlando el número de eventos en el bufer además de dar autoridad a subprocesos para poner en espera de un evento. En resumen la sincronización debe permitir al productor crear eventos que serán almacenados y estos luego ingresados y procesados por el consumidor, tomando en cuenta la capacidad del buffer y si este contiene evento alguno. Problema Lectores-Escritores Este problema se refiere a la situación en la cual se tiene que acceder a una base de datos, modificarla y leerla, mediante hilos. Esto a menudo se evita porque en los procesos pueden ocurrir modificaciones que no se desea que sean leídas por otros hilos. Para solucionar esto los lectores y escritores están en diferentes secuencias, para luego entrar en si a la solución la cual se restringe por, en hito puede haber varios lectores (varios hilos), a diferencia de lo anterior solo un escritor puede acceder a este hito (exclusividad para acceder).El caso de exclusividad implica que esta excepción es tratada como categorías y no como tema de hilos. La solución implica que la sincronización, se debe monitorear el acceso le los lectores, si el hito esta vacio ingresa un escritor y solo puede permanecer él, si un lector desea ingresar, este estará en espera (cola), la clave está en contar el acceso de lectores y cuando este contador sea 0, pueda ingresar el escritor, y se bloqueara cualquier otro acceso, esto evita la lectura de datos erróneos.