为什么不是把线程锁加value+=1的位置,而是要放在for循环外,
这样的话是不是还是在同步执行,顺序修改value呢
import threading
value = 0
glock = threading.Lock()
def add_value():
global value
glock.acquire()
for x in range(100000):
value += 1 #为啥不放在这行代码的上方和下方
glock.release()
print("value的值为:",value)
def main():
for x in range(2): #
t1 = threading.Thread(target=add_value)
t1.start()
if __name__ == '__main__':
main()
你放也没有问题。只是重复的锁定解锁效率会很低。这个过程会有一定的CPU开销。
放里边也没问题,只是逻辑上会有所不同,同时如楼上所说,这样会频繁的枷锁和解锁,效率反而会低。
但这段代码只是让你熟悉一下线程,线程锁的用法,在实际中不会这样使用的。。
放在for外面的输出结果是
value的值为:10000
value的值为:20000
放在for循环里的输出什么样都有可能