Python 互斥体
时间: 2024-06-01 19:06:35 浏览: 177
在 Python 中,互斥体(mutex)是一种用于线程同步的机制,可以保证在任意时刻只有一个线程可以访问共享资源。互斥体在使用前必须先被锁定,当一个线程获得了互斥体的锁之后,其他线程就无法访问该资源,直到该线程释放互斥体的锁为止。互斥体通常用于保护对共享资源的访问,例如共享内存、全局变量等。
Python 提供了 threading 模块来支持线程编程,其中 Lock 类就是互斥体的一种实现方式。下面是一个简单的示例:
```python
import threading
counter = 0
lock = threading.Lock()
def increment():
global counter
for i in range(100000):
lock.acquire()
counter += 1
lock.release()
def decrement():
global counter
for i in range(100000):
lock.acquire()
counter -= 1
lock.release()
if __name__ == '__main__':
t1 = threading.Thread(target=increment)
t2 = threading.Thread(target=decrement)
t1.start()
t2.start()
t1.join()
t2.join()
print("Counter value: ", counter)
```
在上面的示例中,我们定义了一个全局变量 counter,并使用 Lock 类来保证对它的访问是互斥的。我们创建了两个线程,一个线程执行 increment() 函数,另一个线程执行 decrement() 函数,它们都会修改 counter 的值。由于这两个函数都使用了 lock.acquire() 和 lock.release() 来锁定和释放互斥体,因此在任意时刻只有一个线程能够访问 counter 变量,从而保证了计数器的正确性。
阅读全文