列举几种线程的同步机制
时间: 2023-12-29 19:24:20 浏览: 42
以下是几种线程的同步机制:
1. 互斥锁:互斥锁是一种最基本的同步机制,它可以保证在同一时刻只有一个线程访问共享资源。当一个线程获得互斥锁后,其他线程就必须等待该线程释放锁后才能继续访问共享资源。
```python
import threading
# 创建互斥锁
mutex = threading.Lock()
# 线程1
def thread1():
mutex.acquire()
# 访问共享资源
mutex.release()
# 线程2
def thread2():
mutex.acquire()
# 访问共享资源
mutex.release()
```
2. 信号量:信号量是一种更加灵活的同步机制,它可以控制多个线程同时访问共享资源的数量。当信号量的值为1时,它就和互斥锁的作用一样;当信号量的值大于1时,它就可以允许多个线程同时访问共享资源。
```python
import threading
# 创建信号量
semaphore = threading.Semaphore(3) # 最多允许3个线程同时访问共享资源
# 线程1
def thread1():
semaphore.acquire()
# 访问共享资源
semaphore.release()
# 线程2
def thread2():
semaphore.acquire()
# 访问共享资源
semaphore.release()
```
3. 条件变量:条件变量是一种更加高级的同步机制,它可以让线程在满足特定条件时才能访问共享资源。当条件不满足时,线程会进入等待状态,直到条件满足后才会被唤醒。
```python
import threading
# 创建条件变量
condition = threading.Condition()
# 线程1
def thread1():
with condition:
while not condition_is_met():
condition.wait()
# 访问共享资源
# 线程2
def thread2():
with condition:
# 修改条件
condition.notify_all()
```