Hola a todos. Estoy comenzando con Python, haciendo un curso, en el que nos han dado un problema.
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()