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