多进程编程——信号量

本文介绍了信号量的概念和作用,以及如何通过信号量实现进程间的同步与互斥。详细讲解了信号量的P、V操作,以及信号量的初始化、等待、发送和清理等函数,提供了一个实现进程互斥访问临界资源的理论基础。
摘要由CSDN通过智能技术生成

一、为什么会引进信号量

  在这里,我们先说明几个概念。 

1.同步:同步亦称直接制约关系,它是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调它们的工作次序而等待。传递信息所产生制约关系。进程的直接制约关系就是源于它们之间的相互合作。

2.互斥:互斥亦成为间接制约资源。当一个进程进入临界区使用临界资源时,另一个进程必须等待,当临界资源的进程退出临界区后,另一个进程才允许去访问此临界资源。

3.临界资源:一次仅允许一个进程使用的资源叫做临界资源。

4.临界区:每个进程中访问临界资源的那段代码叫做临界区。

5.原子操作:原子操作是不可分割,在执行完毕前不会被任何事件或任务中断。

具体来说,原子操作有两种:

P操作:自减1操作

V操作:自增1操作

  若能保证诸进程互斥的进入自己的临界区,便能实现诸进程对临界资源的互斥访问。为此,每个进程在进入临界区之前,应先对其欲访问的临界资源进行检查,看它是否正在被访问,如果此刻临界资源未被访问,进程便可进入临界区对资源进行访问,并设置它正在被访问的标志,如果正在被某进程访问,那么本进程不能进入临界区。

  这里它是否正在被访问的标志就是信号量。

二、信号量

  信号量用来记录临界资源的个数,当进程占用临界资源之前,必须对信号量进行P操作,当释放临界资源后,对信号量进行V操作。信号量可以当做是一个计数器,标志着是否有进程正在访问该临界资源。

  对信号量有4种操作:

1. 初始化(initialize),也叫做建立(create) int sem_init(int key);

2. 等信号(wait),也可叫做

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值