python多线程互斥锁
时间: 2023-10-12 16:04:56 浏览: 178
在 Python 中,可以使用互斥锁(mutex)来实现多线程的互斥操作。互斥锁是一种同步原语,它能确保在同一时刻只有一个线程可以进入被保护的临界区。
下面是一个简单的示例,演示了如何使用互斥锁来保护共享资源:
```python
import threading
# 创建一个互斥锁对象
mutex = threading.Lock()
# 共享资源
shared_resource = 0
def increment():
global shared_resource
for _ in range(1000000):
# 使用互斥锁来保护共享资源
mutex.acquire()
shared_resource += 1
mutex.release()
def decrement():
global shared_resource
for _ in range(1000000):
# 使用互斥锁来保护共享资源
mutex.acquire()
shared_resource -= 1
mutex.release()
# 创建两个线程
t1 = threading.Thread(target=increment)
t2 = threading.Thread(target=decrement)
# 启动线程
t1.start()
t2.start()
# 等待线程结束
t1.join()
t2.join()
print("Shared resource value:", shared_resource)
```
在上面的示例中,我们使用了 `threading.Lock()` 创建了一个互斥锁对象 `mutex`。在 `increment()` 和 `decrement()` 函数中,我们使用 `mutex.acquire()` 来获取锁,并使用 `mutex.release()` 来释放锁。这样可以确保在任意时刻只有一个线程可以访问共享资源 `shared_resource`。
请注意,互斥锁是一种比较低级的同步原语,如果使用不当可能会导致死锁等问题。因此,在编写多线程代码时,需要仔细考虑锁的使用方式,以避免潜在的问题。
阅读全文