多线程中共享变量 加锁代码
时间: 2024-04-14 16:06:08 浏览: 133
在多线程中,如果多个线程需要同时访问某个共享变量,就需要使用锁来保证线程安全,防止出现数据竞争的情况。
下面是一个使用锁的示例代码:
```python
import threading
# 共享变量
count = 0
# 创建锁
lock = threading.Lock()
# 线程函数
def worker():
global count
# 加锁
lock.acquire()
try:
# 对共享变量进行操作
count += 1
print("Count is %d" % count)
finally:
# 释放锁
lock.release()
# 创建线程
threads = []
for i in range(10):
t = threading.Thread(target=worker)
threads.append(t)
# 启动线程
for t in threads:
t.start()
# 等待所有线程执行完毕
for t in threads:
t.join()
```
这个示例中,我们使用了 Python 的 threading 模块来创建了10个线程。这些线程都执行 worker 函数,在函数中对共享变量 count 进行了加一的操作。在每次对 count 进行操作时,我们使用了锁来保证线程安全。具体来说,我们使用 lock.acquire() 来获取锁,表示此时开始对共享变量进行操作;然后使用 try...finally... 语句块来保证在任何情况下都能释放锁,即使出现了异常也不会影响其他线程对共享变量的访问;最后使用 lock.release() 来释放锁,表示此时对共享变量的操作已经完成。
通过这种方式,我们能够保证多个线程同时访问同一共享变量时不会出现问题,保证了程序的正确性。
阅读全文