一、信号量
1、概念:当多个进程需要协同合作时,需要根据某个信号,判断当前进程是否需要停下来等待;同时,其他进程需要根据这个信息判断是否有进程在等待,或者有几个进程在等待,以决定是否需要唤醒等待的进程。而这个信息,就是信号量。
进程同步控制(类似计数器,>0 临界资源的个数 ==0 没有临界资源可用,申请资源进程执行P操作,则进程会被阻塞)
进程同步:进程协同工作
进程异步:进程独立运行,互不干扰,需要内核机制来做通知 ----> 信号
临界资源:同一时刻只能被一个进程访问使用的资源 临界资源可以有多份
临界区:访问临界资源的代码区域
原子操作:不能被终止,不能被暂停 一旦开始操作 必须等待他结束
P操作 -1 V操作 +1
信号量的内核对象 维护的是信号量集 信号量的数组
2、信号 & 信号量:
信号:完成进程间消息通知
信号量:完成进程间同步控制,用于多进程访问同一临界资源
二、消息队列
1、消息队列(先进先出):在同一类型上符合先进先出的规定,对于整个消息队列 类优先级队列
2、特点:是消息的链表。具有特定的格式,存放在内存中,由消息队列标识符标识
消息队列允许一个或多个进程向他写入与读取消息
消息队列可实现消息的随机查询,不一定以先进先出的顺序读取,也可以按照类型进行读取