小小白_弟中弟 2019-09-10 09:56 采纳率: 100%
浏览 201
已采纳

线程锁的小疑问,线程锁的位置问题

为什么不是把线程锁加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()
  • 写回答

3条回答 默认 最新

  • 502203305 2019-09-10 10:01
    关注

    你放也没有问题。只是重复的锁定解锁效率会很低。这个过程会有一定的CPU开销。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作