问题描述
我具有要从线程和主程序访问的全局变量:
import thread
var = 0
def abc(lock):
lock.acquire()
var = 1
lock.release()
lock = thread.allocate_lock()
thread.start_new_thread(abc,(lock))
while True:
#should I put lock.acquire() here?
var = 2
#and should I put lock.realease() here?
我会想象这样的事情。至少我只用线程来做到这一点(顺便说一句-将锁传递到这样的线程中可以吗?我对所有线程都这样做了)。如果不可能的话,唯一的方法就是也将主代码放入线程中?
解决方法
由于存在GIL(全局解释锁),因此您可以使用全局变量在线程之间传递数据。由于线程共享相同的内存,并且不能死锁应用程序,因此可以安全地使用全局变量,也可以在首次创建线程时将变量作为参数传递。