之前我们学习了管道,消息队列,共享内存,今天我们再来学一种进程间通信的方式-----信号量
信号量
信号量本质上是一个计数器(不设置全局变量是因为进程间是相互独立的,而这不一定能看到,看到也不能保证++引用计数为原子操作),用于多进程对共享数据对象的读取,它和管道有所不同,它不以传送数据为主要目的,它主要是用来保护共享资源(信号量也属于临界资源),使得资源在一个时刻只有一个进程独享。
在了解信号量之前,我们先来看几个概念
临界资源:两个进程看到的同一个公共的资源,但是同时只能被一个进程所使用的的资源叫做临界资源(互斥资源)
临界区:在晋城中涉及到互斥资源的程序段叫临界区
信号量主要用于同步和互斥,下面我们来看看什么是同步和互斥。
互斥:各个进程都要访问共享资源,但共享资源是互斥的,同时只能有一个进程使用。因此,各个进程之间竞争使用这些资源,将这种关系称为互斥。
同步:多个进程需要相互配合共同完成一项任务。
信号量的工作机制
简单说一下信号