python 使用互斥锁保护共享内存的读写
时间: 2024-09-12 12:13:41 浏览: 47
在Python中,互斥锁(也称为Mutex或Lock)是一种同步原语,用于保护共享资源,防止多个线程同时访问造成数据竞争。当需要对某个变量或代码块进行独占式读写操作时,可以使用`threading.Lock`对象作为锁。
以下是一个简单的例子,展示如何使用互斥锁保护共享内存的读写:
```python
import threading
# 共享数据
shared_data = 0
lock = threading.Lock()
def reader_thread():
global shared_data
lock.acquire() # 获取锁
try:
print(f"Reader: {shared_data}")
finally:
lock.release() # 释放锁
def writer_thread(value):
global shared_data
with lock: # 使用with语句自动获取并释放锁
shared_data = value
print(f"Writer: Set data to {value}")
reader_thread()
writer_thread(42)
```
在这个例子中,`reader_thread` 和 `writer_thread` 都会尝试获取相同的锁。`writer_thread` 写入数据时,其他正在读取的线程会被阻塞直到锁被释放。这样就保证了在任何时候只有一个线程能修改共享数据,避免了并发时的数据冲突。
阅读全文