Introducción a la concurrencia: El jardín ornamental |
Programa |
Lenguaje |
Programa fallido: ¿Por qué (casi) nunca suma 20+20 = 40?
|
C
|
Segundo intento: Suspendiendo la multitarea durante la sección crítica
|
C
|
Tercer intento: Utilizar una variable a modo de bandera
|
C
|
Ilustrando el fallo del tercer intento: Nueva sección crítica
|
C
|
Cuarto intento: Manejar la bandera con instrucciones atómicas
|
C
|
Espera activa del cuarto intento
|
C
|
Quinto intento: Utilizar turnos
|
C
|
Sexto intento: Indicar la intención de emplear la sección crítica
|
C
|
Solución de Peterson aplicada a resolver el jardín ornamental
|
C
|
Introducción a la concurrencia: Venta de pasajes |
Programa |
Lenguaje |
Código muestra del empleo de mutexes para sincronizar el uso de secciones críticas
|
Perl
|
Código en shell que implementa mutexes
|
Shell
|
Patrones de uso de semáforos |
Programa |
Lenguaje |
Ejemplo del patrón Señalizar
|
Python
|
Ejemplo del patrón Barrera
|
Python
|
Ejemplo del patrón Cola
|
Python
|
Ejemplo del patrón Mutex
|
Python
|
Ejemplo del patrón Rendezvous
|
Python
|
Ejemplo del patrón Torniquete
|
Python
|
Problemas clásicos de sincronización |
Programa |
Lenguaje |
Primer acercamiento al problema de Productores y consumidores, sin considerar sincronización
|
Python
|
Solución a Productores y consumidores empleando mutex y señalización
|
Python
|
Python permite un uso más idiomático del mutex
|
Python
|
Solución a Lectores y escritores (permite inanición)
|
Python
|
Solución a Lectores y escritores (evita inanición)
|
Python
|
Primer acercamiento la cena de los filósofos, empleando semáforos: Lleva a bloqueo mutuo
|
Python
|
Modificación al primer acercamiento para la cena de los filósofos, que elimina el bloqueo mutuo
|
Python
|
Otra modificación válida (tal vez menos óptima) para evitar el bloqueo mutuo en la cena de los filósofos
|
Python
|
Primer acercamiento a la resolución de los fumadores compulsivos, empleando semáforos
|
Python
|
Adición y modificación de intermediarios que, cumpliendo los requisitos dados, resuelve a los fumadores compulsivos
|
Python
|
El problema de la cena de los filósofos, em con monitores (no semáforos)
|
C
|
Concurrencia: Otros puntos |
Programa |
Lenguaje |
Ejemplo de mal uso de trywait (o del error de ser optimista)
|
C
|
Java ofrece un esquema sincronización simple propia de la JVM basado en Mutex
|
Java
|
Bloqueos mutuos |
Programa |
Lenguaje |
Implementación muy simple del algoritmo del banquero
|
Ruby
|
Administración de memoria: Consideraciones de rendimiento |
Programa |
Lenguaje |
Ejemplo de la importancia de considerar al caché al recorrer un arreglo
|
C
|