当多个线程同时修改某一共享数据的时候,有时需要进行一定的同步控制 。
以下示例为2个线程同时进行数据运算操作,确保每个线程执行完返回完成的数据:
import threading num = 100 def demo1(): global num for i in range(1000000): mutex.acquire() num += 1 mutex.release() print('demo1----num:%d' % num) def demo2(): global num for j in range(1000000): mutex.acquire() # 进行循环运算操作时加锁 num += 1 mutex.release() # 运算完毕时解锁 print('demo2----num:%d' % num) def main(): t1 = threading.Thread(target=demo1) t2 = threading.Thread(target=demo2) t1.start() t1.join() t2.start() t2.join() # print(num) if __name__ == '__main__': mutex = threading.Lock() # 创建锁 main() |
执行结果如下:
demo1----num:1000100 demo2----num:2000100 |