Linux通信System V:消息队列 & 信号量
一、信号量概念
信号量本质上就是计数器,用来保护共享资源。多个进程在进行通信时,前提需要看到同一份共享资源。但多个进程对公共资源并发访问时,通常会伴随着数据不一致问题。我们。一般采用同步和异步机制对公共资源进行保护!!其中被保护的资源被称为临界资源;访问该临界资源的代码称为临界区!!
- 同步:任何时候只运行一个执行流(进程)访问公共资源,通过加锁完成!
- 异步:多个执行流执行的时候,按照一定的顺序执行。
- 原子性:只有2态,要么做,要么不做。
- 被保护的公共资源被称为公共资源,访问该公共资源的代码称为临界区。
二、信号量意义
首先,我们先来想一个问题:当我们买票看电影时,座位是购买票后就属于你,还是只有当你坐在那个位置才属于你?显然,当我们买完票后,票上显示的座位就属于你。电影院是公共资源,而买票的行为本质上是对公共资源(作为)的预定!!
同理,信号量本质上就是一把表示公共资源数目的计数器。在计算机中,公共资源可以被分为多个部分,而信号量表示资源数目的计数器。当一个执行流想要访问公共资源时,不因该直接让其访问,否则会导致数据不一致问题!(例如:多个进程通过一块公共资源进程通信