当多个线程同时修改某一共享数据的时候,有时需要进行一定的同步控制 。
以下示例为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 |
本文探讨了在多线程环境下,如何通过使用锁(mutex)机制来确保数据的一致性和安全性。具体展示了两个线程同时对共享数据进行递增操作的实例,说明了在循环运算中加锁和解锁的重要性。
1050

被折叠的 条评论
为什么被折叠?



