ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Codigo de python


Enviado por   •  8 de Noviembre de 2022  •  Tarea  •  1.273 Palabras (6 Páginas)  •  48 Visitas

Página 1 de 6

rom threading import Semaphore, Thread, Lock

numero_de_autos=0

cuenta_motor = 0 #cuentas de elementos independientes

cuenta_seccion_de_chasis = 0

cuenta_seccion_de_transmision = 0

cuenta_llantas = 0

cuenta_pinturas = 0

cuenta_motor_chasis = 0 #cuentas de elementos compuestos

cuenta_transmision_llantas = 0

cuenta_autos_sin_pintura = 0

cuenta_autos = 0

total_motor = 0 #totales de elementos independientes

total_seccion_de_chasis = 0

total_seccion_de_transmision = 0

total_llantas = 0

total_pinturas = 0

total_motor_chasis = 0 #totales de elementos compuestos

total_transmision_llantas = 0

total_autos_sin_pintura = 0

total_autos = 0

mutex_print = Semaphore(1) #mutex para imprimir correctamente

mutex_motor = Semaphore(1) #mutexes de elementos independientes

mutex_seccion_de_chasis = Semaphore(1)

mutex_seccion_de_transmision = Semaphore(1)

mutex_llantas = Semaphore(1)

mutex_pinturas = Semaphore(1)

mutex_motor_chasis = Semaphore(1) #mutexes de elementos compuestos

mutex_transmision_llantas = Semaphore(1)

mutex_autos_sin_pintura = Semaphore(1)

mutex_autos = Semaphore(1)

hay_motor = Semaphore(0) #barreras de elementos independientes

hay_seccion_de_chasis = Semaphore(0)

hay_seccion_de_transmision = Semaphore(0)

hay_llantas = Semaphore(0)

hay_pintura = Semaphore(0)

hay_motor_chasis = Semaphore(0) #barreras de elementos compuestos

hay_transmision_llantas = Semaphore(0)

hay_auto_sin_pintura = Semaphore(0)

mutex_completado = Semaphore(0) #barrera de finalizacion

#LAS FUNCIONES A CONTINUACION SON SIMILARES POR LO QUE SOLO COMENTARE LAS SECCIONES PERTINENTES UNA SOLA VEZ

def constructor_motor():

global mutex_motor, cuenta_motor, total_motor, mutex_print, hay_motor

mutex_motor.acquire() #se protege las variables de cuenta y totales

cuenta_motor = cuenta_motor + 1

total_motor = total_motor + 1

mutex_print.acquire()

print("\n Se construyó el motor numero",total_motor)

mutex_print.release()

mutex_motor.release()

hay_motor.release() #se hace una señalización de que hay motor disponible

def constructor_seccion_de_chasis():

global mutex_seccion_de_chasis, cuenta_seccion_de_chasis, total_seccion_de_chasis, hay_seccion_de_chasis, mutex_print

mutex_seccion_de_chasis.acquire()

cuenta_seccion_de_chasis = cuenta_seccion_de_chasis + 1

total_seccion_de_chasis = total_seccion_de_chasis + 1

mutex_print.acquire()

print("\n Se construyó la seccion de chasis numero",total_seccion_de_chasis)

mutex_print.release()

if(cuenta_seccion_de_chasis > 1):

hay_seccion_de_chasis.release() #aqui tambien se hace una señalización pero con una condicional, por lo que seria un torniquete

mutex_seccion_de_chasis.release()

def constructor_seccion_de_transmision():

global mutex_seccion_de_transmision, cuenta_seccion_de_transmision, total_seccion_de_transmision, hay_seccion_de_transmision, mutex_print

mutex_seccion_de_transmision.acquire()

cuenta_seccion_de_transmision = cuenta_seccion_de_transmision + 1

total_seccion_de_transmision = total_seccion_de_transmision + 1

mutex_print.acquire()

print("\n Se construyó la seccion de transmision numero",total_seccion_de_transmision)

mutex_print.release()

if(cuenta_seccion_de_transmision > 3):

hay_seccion_de_transmision.release()

mutex_seccion_de_transmision.release()

def constructor_llantas():

global mutex_llantas, cuenta_llantas, total_llantas, mutex_print, hay_llantas

mutex_llantas.acquire()

cuenta_llantas = cuenta_llantas + 1

total_llantas = total_llantas + 1

mutex_print.acquire()

print("\n Se construyó la llanta numero",total_llantas)

mutex_print.release()

if(cuenta_llantas > 3):

hay_llantas.release()

mutex_llantas.release()

def mezclador_pintura():

global mutex_pinturas, cuenta_pinturas, total_pinturas, mutex_print, hay_pintura

mutex_pinturas.acquire()

cuenta_pinturas = cuenta_pinturas + 1

total_pinturas = total_pinturas + 1

mutex_print.acquire()

print("\n Se mezclo la pintura numero",total_pinturas)

mutex_print.release()

mutex_pinturas.release()

hay_pintura.release()

def ensamblar_motor_con_seccion_de_chasis():

global hay_motor, hay_seccion_de_chasis, cuenta_motor, cuenta_seccion_de_chasis, total_motor_chasis, mutex_motor_chasis, mutex_motor, mutex_seccion_de_chasis, cuenta_motor_chasis, mutex_print, hay_motor_chasis

hay_motor.acquire()

hay_seccion_de_chasis.acquire() #debe esperar a una señalizacion de sus elementos independientes de que estan listos

mutex_motor_chasis.acquire() #tambien se debe proteger las variables que cuentan a este elemento compuesto

total_motor_chasis = total_motor_chasis + 1

mutex_motor.acquire()

mutex_seccion_de_chasis.acquire()

mutex_print.acquire()

print("\n ---> Hay",cuenta_motor,"motor/es y",cuenta_seccion_de_chasis,"secciones

...

Descargar como (para miembros actualizados) txt (10 Kb) pdf (49 Kb) docx (13 Kb)
Leer 5 páginas más »
Disponible sólo en Clubensayos.com