之前的文章不知道有没有讲过,核间交互从数据获取的方式来说可以分成两类,一类是消息接口,可以理解成事件通知,一类是状态接口,可以理解成字典查询。
我们来看看这两个接口的特点。事件通知接口对于收方来说是无论如何都要接收的,接收后缓存、处理、生成新的内容传递给下游,比如订单生成系统通知收付款系统,收发双方是强关联的。字典查询接口对于收方来说是可有可无的,收方正常处理自己的业务,遇到需要某个数据的时候去字典里查一下,收方不关心字典里的数据是不是最新,比如购物网站里的根据个人偏好推送的页面,收发双方是弱关联的。这篇文章讨论下状态接口的实现方式。
一般来说,linux C不同种类的接口的底层实现都是共享内存。
![68e54bc4728f88f2d5e758a2a004c99e.png](https://img-blog.csdnimg.cn/img_convert/68e54bc4728f88f2d5e758a2a004c99e.png)
实现这种底层通信机制的团队往往是专业的框架团队,这样的团队倾向于以纯软件技术的角度去实现这种交互机制。这句话什么意思呢?框架团队不希望感知业务细节,实现状态通信的时候一般会实现成下图这样。我们先看StatusHead,包括状态接口的类型comType(软件里可能存在很多种不同业务的状态消息),包括每个状态的内存大小len,包括状态的个数,举个例子描述下:有个软件叫吃苹果,想通过状态接口获取苹果的颜色comType=APPLE_COLOR,苹果呢有100个statusNum=100,颜色状态的存储假设用8个字节len=8。