介绍:

Boost.Interprocess 简化了进程间通信和同步机制,并且提供了很多方式方法:

  • 共享内存
  • 内存文件映射
  • 用于共享内存和内存文件映射中的Semaphores、mutexes、Condition variables和upgradable mutex
  • 命名版本的同步机制,类似于unix\windows中的sem_open\createSemaphore API
  • 文件锁
  • 相对指针
  • 消息队列

Boost.Interprocess 还提供了高级的进程间通信机制来动态分配共享内存和内存文件映射(一般是分配固定大小的内存)。通过这些机制,Boost.Interprocess提供了方便的工具来构建对象,包括在共享内存和内存文件映射中提供类似stl的容器。

  • 在共享内存和内存文件映射中动态创建匿名/有名对象
  • 可以在共享内存/内存文件映射中使用类似stl容器
  • 共享内存/内存文件映射提供了类似stl的多种内存分配器

基础概念

1.进程和线程

interprocess中的同步机制不仅可以用于进程之间,还可以用在线程之间。

2.进程间信息传递

在操作系统中,不同进程拥有自己的地址空间,进程间信息传递的方式主要有以下几种方式:

(1) 共享文件方式:不同进程通过读写一个文件来进行信息传递,需要利用同步机制来保证信息读取。

(2) 操作系统内核共享方式:这个是通过操作系统内核来保证的.

(3) 共享内存方式:包括共享内存和共享内存文件映射,该种方式不通过操作系统内核调用,但是需要同步机制来保证信息读取。

3.进程间机制的持久性

进程间机制的生命周期是一个非常重要的问题。在interprocess中共有3种持久化机制。

  • 进程持久化: 这种方式是通过进程来控制进程间的机制存在周期,当所有打开进程通信机制的进程全部关闭、退出或者崩溃,进程间的通信机制才会销毁。
  • 内核持久化: 这种方式会在系统重启或者进程机制被删除时才会销毁。
  • 文件系统持久化: 这种方式直到被删除时才会被销毁。

注意,在POSIX和Windows有不同的进程通信持久化机制,所以在Windows和POSIX之间实现移植是非常困难的。interprocess进程通信持久化机制如下所示:

Table 18.1. Boost.Interprocess Persistence Table

Mechanism

Persistence

Shared memory

Kernel or Filesystem

Memory mapped file

Filesystem

Process-shared mutex types

Process

Process-shared semaphore

Process

Process-shared condition

Process

File lock

Process

Message queue

Kernel or Filesystem

Named mutex

Kernel or Filesystem

Named semaphore

Kernel or Filesystem

Named condition

Kernel or Filesystem

在interprocess中定义了一些“内核或文件系统”持久化方式的进程通信机制。这是因为POSIX允许这种方式的存在。如:可以用内存文件映射方式来实现共享内存,从而达到文件系统的持久化方式。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐