diff --git a/ejerciciocajero.py b/ejerciciocajero.py new file mode 100644 index 0000000..02893e7 --- /dev/null +++ b/ejerciciocajero.py @@ -0,0 +1,31 @@ +import threading + +saldo_total = 1000 +lock = threading.Lock() + +def verificar_retirar_dinero(cantidad): + global saldo_total + with lock: # Bloqueamos las variables para que todos los hilos no accedan a la vez + if saldo_total >= cantidad: + saldo_total = saldo_total - cantidad # Decrementamos la cantidad del cajero en el + return True + else: + return False + +def usuario(cantidad_sacar): + if verificar_retirar_dinero(cantidad_sacar): + print(f"Retirada exitosa de {cantidad_sacar} euros.") + else: + print("Saldo insuficiente.") + +hilos = [] # Creamos una lista con los hilos + +for x in range(10): + t = threading.Thread(target=usuario, args=(200,)) + hilos.append(t) # Agregamos los hilos a la lista + t.start() # Ejecutamos los hilos + +for hilo in hilos: + hilo.join() + +print(f"Saldo final: {saldo_total} euros.") # Mostramos el saldo final que queda en el cajero