(Comments)
#!/usr/bin/python
import threading
import time
def hilo(i):
"""
:param i: numero de hilo a efectos ilustrativos
:return: nada
"""
print "[+] En hilo %d\n" % i
time.sleep(3)
print "[-] hilo %d finalizado\n" % i
# Creacion y Ejecucion de 1 hilo paralelo a hilo 2
simplethread=threading.Thread(target=hilo, args=[1])
simplethread.start()
# Esto se ejecuta como proceso principal
hilo(2)
# Esperamos a que acabe el hilo paralelo 1
simplethread.join()
#!/usr/bin/python
import threading
import time
NTHREADS=20
def hilo(i):
"""
:param i: numero de hilo a efectos ilustrativos
:return: nada
"""
print "[+] En hilo %d" % i
time.sleep(3)
print "[-] hilo %d finalizado" % i
simplethread=[]
for i in range(NTHREADS):
# arranque y comienzo de hilo num i+1
simplethread.append(threading.Thread(target=hilo, args=[i+1]))
simplethread[-1].start()
for i in range(NTHREADS):
# esperamos que acabe el hilo num i
simplethread[i].join()
print "[*] all threads finished"
#!/usr/bin/python
import threading
from threading import Semaphore
import time
NTHREADS=20
WIDTH=1
sem=Semaphore(WIDTH)
def hilo(i):
"""
:param i: numero de hilo a efectos ilustrativos
:return: nada
"""
print "[+] En hilo %d" % i
time.sleep(3)
sem.acquire()
print "[+] En tunel hilo %d" % i
time.sleep(1)
sem.release()
print "[-] hilo %d, estoy fuera" % i
simplethread=[]
for i in range(NTHREADS):
# arranque y comienzo de hilo num i+1
simplethread.append(threading.Thread(target=hilo, args=[i+1]))
simplethread[-1].start()
for i in range(NTHREADS):
# esperamos que acabe el hilo num i
simplethread[i].join()
print "[*] all
#!/usr/bin/python
import threading
from threading import RLock
import time
NTHREADS=20
# Bloqueo de un recurso mientras se usa
sem=RLock()
def hilo(i):
"""
:param i: numero de hilo a efectos ilustrativos
:return: nada
"""
print "[+] En hilo %d" % i
time.sleep(3)
with sem:
print "[+] Bebiendo hilo %d..." % i
time.sleep(1)
print "[-] hilo %d satisfecho" % i
simplethread=[]
for i in range(NTHREADS):
# arranque y comienzo de hilo num i+1
simplethread.append(threading.Thread(target=hilo, args=[i+1]))
simplethread[-1].start()
for i in range(NTHREADS):
# esperamos que acabe el hilo num i
simplethread[i].join()
print "[*] all threads finished"
#!/usr/bin/python
import threading
from threading import Condition
import time
from random import randint
NTHREADS=20
# Bloqueo de un recurso mientras se usa
sem=Condition()
def bebe(i):
s=randint(1,10)
print "[+] Bebiendo hilo %d.. esperate %d secs" % (i,s)
time.sleep(s)
sem.notify(1)
print "[-] estaba de muerte, hilos --%d--" % i
sem.release()
def hilo(i):
"""
:param i: numero de hilo a efectos ilustrativos
:return: nada
"""
print "[+] En hilo %d" % i
time.sleep(1)
while not sem.acquire():
sem.wait(0.5)
else:
bebe(i)
print "[-] hilo %d finalizado" % i
simplethread=[]
for i in range(NTHREADS):
# arranque y comienzo de hilo num i+1
simplethread.append(threading.Thread(target=hilo, args=[i+1]))
simplethread[-1].start()
for i in range(NTHREADS):
# esperamos que acabe el hilo num i
simplethread[i].join()
print "[*] all threads finished"
Comments