Mi problema es que no termino de entender hilos y lo poco que encuentro dando vueltas está en inglés.
Tengo la idea de como hacer funcionar el programa. mi problema es la implementación de hilos "Threads".
Queria ver si podian darme una mano. Les muestro lo que tengo.
Entre las lineas 57 y 60 estaria mi problema, el buffer.
Y en la consulta de vuelos "lector" tenia pensado hacer 2 listas: Una para reservas, con los 1000 asientos con booleanos y otra solo con los asientos reservados. Que no lo hice todavia, me importa mas el buffer.
Agradecería mucho ayuda
Código Python:
Ver original
# Simular con hilos un sistema de reservación de vuelos. Las personas pueden consultar y reservar vuelos. # Hacer la sincronización con múltiples personas accediendo al registro de vuelos. # Cuando se reserva no se puede consultar y viceversa. Lanzar 20 hilos # 1000 lugares en el avion. import threading import random import time class Reserva(threading.Thread): def __init__(self, nombreHilo, asientos, condicion, cant): threading.Thread.__init__(self, name = nombreHilo) self.cant=cant self.condicion=condicion self.asientos=asientos def run(self): #Reserva for i in range(self.cant): self.condicion.acquire() time.sleep(random.randrange(5)) a=random.randint(1,1000)-1 self.asientos[a]=False print ("Se reservó el asiento "+ str(a)) self.condicion.notify() self.condicion.release() time.sleep(random.randrange(2)) class Consulta(threading.Thread): def __init__(self, nombreHilo, asientos, condicion, cant): threading.Thread.__init__(self, name = nombreHilo) self.cant=cant self.condicion=condicion self.asientos=asientos def run(self): self.condicion.acquire() asientos2=self.asientos print("prueba") list.count(x) #asientos disponibles time.sleep(random.randrange(2)) self.condicion.wait() self.condicion.release() condicion = threading.Condition() asi_vuelo = [] for v in range(1000): #Armando el avion asi_vuelo.append(True) #vuelo = BufferCircular() #Aca está mi problema lector = Consulta("Consulta", asi_vuelo, condicion, 20) escritor = Reserva("Reserva", asi_vuelo, condicion, 20) lector.start() escritor.start() lector.join() escritor.join()