corrected infinite loop

This commit is contained in:
Pau 2024-10-17 15:41:02 +02:00
parent 8d446972d7
commit 377ca66aef
2 changed files with 99 additions and 0 deletions

62
threads03/README Normal file
View File

@ -0,0 +1,62 @@
### Thread03 ###
**Resultado:**
Tarea realizada
Tarea realizada
Tarea realizada
Tarea realizada
Tarea realizada
Tarea realizada
Tarea realizada
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
tarea NO REALIZADA
**Explicación:**
El ejercicio consiste de dos hilos. Uno crea 100 puntos (uno cada 1 segundo) y el otro crea 50 rayas (una cada 2 segundos).
En el output final podemos ver que, consistentemente aparecen dos puntos y una raya. La razón de que al principio aparezcan solo un punto y una raya es que, al correr lo dos hilos en paralelo, no siguen un orden exacto de impresión en consola. Sin embargo, al imprimirse más rápido los puntos que las rayas, el output "-..-" es el más común.

37
threads03/thread03.py Normal file
View File

@ -0,0 +1,37 @@
import threading
import time
import random
def tareaUno():
global Done
time.sleep(abs(random.gauss(mu=0.0, sigma=1.0)))
if not Done:
print("Tarea realizada")
time.sleep(0.12)
Done = True
else :
print ("tarea NO REALIZADA")
time.sleep(0.05)
return
def desactivar():
global Done
while True:
time.sleep(abs(random.gauss(mu=0.0, sigma=1.0)))
if Done:
Done = False
print("Desactivo")
if all(not t.is_alive() for t in hilos):
break
Done = False
hilos = list()
for i in range(50):
t = threading.Thread(target=tareaUno)
hilos.append(t)
t.start()
desbloqueo_thread = threading.Thread(target=desactivar)
desbloqueo_thread.start()