在多线程编程时,为了避免线程间的竞争和冲突,我们需要使用锁机制来保护共享资源。在Python中,可以使用threading
模块提供的Lock
类来实现线程锁。
以下是一个示例代码,展示如何在Python中使用锁:
import threading
# 共享资源
a = 0
# 创建一个锁对象
lock = threading.Lock()
# 线程函数
def increment():
global a
# 获取锁
lock.acquire()
try:
for i in range(100000):
a += 1
finally:
# 释放锁
lock.release()
# 创建多个线程
threads = [threading.Thread(target=increment) for i in range(10)]
# 启动多个线程
for thread in threads:
thread.start()
# 等待所有线程执行完成
for thread in threads:
thread.join()
# 输出结果
print(f"Final result: {a}")
在上述代码中,我们首先创建了一个锁对象lock
,然后在线程函数increment()
中使用lock.acquire()
方法获取锁,在执行结束后使用lock.release()
方法释放锁,这样就保证了a
这个共享资源在任意时刻只有一个线程能够进行修改。最后我们使用多个线程来执行increment()
函数,最终输出的结果应该为a
的值为1000000。
本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0 许可协议。转载请注明来自 张拓的博客!