From 68a424b3247c34d8e086cab0dfd78d10fd92cc91 Mon Sep 17 00:00:00 2001 From: Sheila Date: Fri, 24 Nov 2023 19:02:53 +0100 Subject: [PATCH] Ejercicio Lock CuentaBancaria --- EjercicioLockCuentaBancaria.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 EjercicioLockCuentaBancaria.py diff --git a/EjercicioLockCuentaBancaria.py b/EjercicioLockCuentaBancaria.py new file mode 100644 index 0000000..2d318c5 --- /dev/null +++ b/EjercicioLockCuentaBancaria.py @@ -0,0 +1,33 @@ +import threading + +class CuentaBancaria: + def __init__(self): + self.saldo = 1000 + self.lock = threading.Lock() + + def retirar_dinero(self, cantidad): + with self.lock: + if self.saldo >= cantidad: + self.saldo -= cantidad + return True + else: + return False + +def usuario(cuenta, cantidad): + if cuenta.retirar_dinero(cantidad): + print(f"Retirada exitosa de {cantidad} euros.") + else: + print("Saldo insuficiente.") + +cuenta = CuentaBancaria() + +usuarios = [] +for i in range(10): + t = threading.Thread(target=usuario, args=(cuenta, 200)) + usuarios.append(t) + t.start() + +for t in usuarios: + t.join() + +print(f"Saldo final: {cuenta.saldo} euros.") \ No newline at end of file