企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
某个线程要更改共享数据时,先将其锁定,此时资源的状态为<mark>锁定</mark>,其他线程不能改变,只有等到该线程释放资源,将资源的状态变成<mark>非锁定</mark>,其他的线程才能再次锁定该资源。互斥锁保证了每次只有一个线程进行写入操作,从而保证了多线程情况下数据的正确性。 ```python """ @Date 2021/4/5 """ import threading import time num = 0 mutex = threading.RLock() # 获取锁 def demo1(nums): global num mutex.acquire() # 加锁 for i in range(nums): num += 1 mutex.release() # 解锁 print("demo1---%d" % num) # 10000000 def demo2(nums): global num mutex.acquire() for i in range(nums): num += 1 mutex.release() print("demo2---%d" % num) # 20000000 def main(): """ t1与t2两个线程共享一个num变量 """ t1 = threading.Thread(target=demo1, args=(10000000,)) t2 = threading.Thread(target=demo2, args=(10000000,)) t1.start() t2.start() time.sleep(3) print("main---%d" % num) # 20000000 if __name__ == '__main__': main() ```