使用信号或信号量对进程进行同步程序设计的代码
时间: 2024-11-09 11:30:48 浏览: 3
sem_syn.rar_linux syn_信号量_线程 同步
信号量是一种用于进程同步和互斥访问资源的机制,它通过数值变化来控制并发进程的数量。在Python中,可以使用`multiprocessing`模块中的`Semaphore`来实现。下面是一个简单的示例:
```python
import multiprocessing
# 初始化一个信号量,初始值为1,表示只有一个进程可以访问共享资源
semaphore = multiprocessing.Semaphore(1)
def process_function(name):
with semaphore: # 进入临界区,获取信号量
print(f"Process {name} acquired the semaphore")
# 访问共享资源的代码...
# 当完成后释放信号量
print(f"Process {name} releasing the semaphore")
# 创建并启动两个进程
processes = [multiprocessing.Process(target=process_function, args=(i,)) for i in range(2)]
for p in processes:
p.start()
for p in processes:
p.join()
```
在这个例子中,当一个进程获得信号量后,其他进程会阻塞直到该进程释放。这样可以避免多个进程同时访问同一资源导致的问题。
阅读全文