raceConditionBank.py
raceConditionBankLock.py
globalContador.py
El siguente programa lanza un conjunto de threads cuyo código es un contador que incrementa una variable global (contador) una cierta cantidad de veces. El resultado del programa es la impresión del contenido final de la variable global.
Leer y analizar el código y tratar de deducir que hace cada bloque.
- Cual es el valor esperado de la variable contador. En que condiciones se obtendría este valor esperado.
- Ejecute el programa varias veces y explicar a que se deben los resultados que observa.
- Identifique las Secciones Críticas (incluir las lineas de código en la respuesta).
- Modifique el programa, utilizando Locks de modo que se asegure la exclusión mutua en las secciones críticas.
- Que es una "condición de carrera"? Que consecuencias trae y cuando se produce?
- Que es una Sección Crítica?
- Que es la Exclusión Mútua?
- Que son los Locks o Mutex? Bonus (opcional): que es un "deadlock"?, como se produce y que consecuencias tiene?