进程通信
进程通信范式
持锁共享内存
在这种范式下, 两个或者多个进程可以同时读写一块或者多块常规内存区域....有时进程需要在这些内存区域上执行一些具有原子性的操作序列, 其他进程在操作完成前不得访问这些区域, 这就需要一种令该进程阻止其他进程访问这些区域的方法, 也就是锁....锁的实现需要内存系统的支持, 一般是由硬件以特殊指令的形式提供支持. 使用锁的进程之间必须通力合作: 所有进程必须先获取锁才能访问共享内存区域, 访问结束后还需要将锁归还给其他进程使用....尽管借助这些构件我们可以规避最棘手的问题, 但仍然难以克服诸多锁的缺点:
锁的开销过大.
锁是内存系统中的竞争热点.
出错的进程可能正处于加锁状态, 无法释放锁....读进程可以根据消息类型有选择的接收消息, 而不像FIFO那样只能默认的接收.
信号量
他是一个计数器, 用于为多个进程提供共享数据对象的访问.