在多线程编程时,为了避免线程间的竞争和冲突,我们需要使用锁机制来保护共享资源。在Python中,可以使用threading模块提供的Lock类来实现线程锁。

以下是一个示例代码,展示如何在Python中使用锁:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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。