commit
edb5541b92
@ -0,0 +1,38 @@
|
||||
#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()
|
Loading…
Reference in new issue