46 lines
907 B
Python
Executable File
46 lines
907 B
Python
Executable File
"""
|
|
Compartiendo memoria entre hilos.
|
|
Como 'habitan' el mismo espacio de memoria, todos los
|
|
hilos tiene acceso a los mismos datos.
|
|
"""
|
|
|
|
from threading import Thread, Lock
|
|
import time
|
|
|
|
valor_db = 0
|
|
|
|
def incrementar(lock):
|
|
"""
|
|
Funcion de prueba que simula dato de bd
|
|
|
|
with lock:
|
|
...
|
|
|
|
"""
|
|
global valor_db
|
|
# lock previene el acceso a dato por otro hilo al mismo tiempo
|
|
#lock.acquire()
|
|
with lock:
|
|
copia_local = valor_db
|
|
copia_local +=1
|
|
time.sleep(0.1)
|
|
valor_db = copia_local
|
|
#lock.release()
|
|
|
|
if __name__ == "__main__":
|
|
|
|
lock = Lock()
|
|
print('Valor inicial', valor_db)
|
|
|
|
hilo1 = Thread(target=incrementar, args=(lock,))
|
|
hilo2 = Thread(target=incrementar, args=(lock,))
|
|
|
|
hilo1.start()
|
|
hilo2.start()
|
|
|
|
hilo1.join()
|
|
hilo2.join()
|
|
|
|
print('Valor final', valor_db)
|
|
print('Fin Main')
|