You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Lock/EjercicioLock.py

38 lines
1.2 KiB

10 months ago
#Ejercicio: Imagina que tienes un sistema de cajeros automáticos con un saldo inicial de 1000 euros.
#Varios usuarios pueden acceder al cajero simultáneamente para retirar dinero.
#Tu tarea es asegurarte de que, cuando un usuario retire dinero,
#el saldo se actualice correctamente sin ser afectado por las operaciones de otros usuarios.
#Para ello, puedes utilizar la instrucción lock. Ejemplo de salida.
import random
import threading
class Cajero:
def __init__(self):
self.saldoCajero = 1000
self.lock = threading.Lock()
def mostarResultado(self,result,cantidad):
if(result):
print(f"Retirada exitosa de {cantidad}")
else:
print(f"Saldo insuficiente para retirar {cantidad}")
def sacarDinero(self,cantidad):
with self.lock:
if(self.saldoCajero >= cantidad):
self.saldoCajero -= cantidad
self.mostarResultado(True,cantidad)
else:
self.mostarResultado(False,cantidad)
cajero = Cajero()
hilos = list()
for i in range(random.randrange(1000)):
t = threading.Thread(target=cajero.sacarDinero,args=(random.randrange(1,100),))
hilos.append(t)
t.start()
for t in hilos:
t.join()

Powered by INFORMATICA.FP.EDU.ES.