logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

Iceoryx(冰羚):通知机制是如何实现的(源码解析)

本文介绍了通知机制在跨进程数据订阅中的实现原理。通过观察者模式和信号量技术,实现了Publisher对多个Subscriber的高效唤醒。核心在于:1)使用信号量原语sem_wait/sem_post实现零CPU占用的微秒级唤醒;2)通过共享内存传递信号量对象ConditionVariableData;3)Publisher通过ChunkQueueData获取Subscriber的通知信息进行精准

#服务器#中间件#c++ +1
Iceoryx(冰羚):哪些设计做到零拷贝

本文介绍了Iceoryx(冰羚)的零拷贝内存的实现原理。设计1采用Loan/Publish双阶段模型,用户层可直接操作共享内存数据。设计2更为复杂,通过RouDi进程实现发布订阅机制:订阅者请求订阅后,RouDi将订阅者的队列地址添加到匹配发布者的投递名单中。两种设计都涉及共享内存管理,分别由用户层和RouDi层接口控制,确保进程崩溃时能正确回收内存资源。

#c++#架构#中间件
Iceoryx(冰羚):所有权转移设计详解

本文介绍了共享内存池中Chunk的设计与实现。Chunk由ChunkHeader(元数据)和UserPayload(业务数据)组成,采用信封-信件模型管理数据。设计包含正查/反查机制,通过偏移量实现指针转换。所有权转移通过引用计数实现,由ChunkManagement结构体管理,与ChunkHeader分离以保证内存安全。SharedChunk类负责自动增减引用计数,计数归零时释放内存。这种分离设

#c++#架构#算法
Iceoryx(冰羚): Publisher源码设计解析

本文分析了Publisher的源码设计,主要包含两个核心部分:1)分层架构设计,包括用户层、适配层、公共行为层、端口层和数据层;2)Loan/Publish双阶段模型。Loan阶段通过共享内存池分配chunk并就地构造对象,Publish阶段转移所有权并发送数据。关键流程涉及内存分配、指针转换和零拷贝传输,最终通过共享内存实现高效数据发布。

#算法#c++#架构
到底了