Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

一个基于发布-订阅模型的多线程消息框架,用于嵌入式平台,纯C实现,性能和灵活性极高

License

Notifications You must be signed in to change notification settings

meyejack/OneMessage

Repository files navigation

OneMessage

一个基于 发布-订阅模型的多线程消息框架,用于嵌入式平台,纯C语言编写,性能和灵活性极高


系统支持

已在Linux,FreeRTOS上成功运行,欢迎适配到其他平台。

特性

  • 发布-订阅

    • 底层由红黑树+链表实现,查找与遍历都有良好的性能表现
    • 话题为操作的主体,匿名发布且不限制订阅者数量
  • 安全性

    • 保证线程安全
    • 允许在中断中使用
    • 提供静态API,可以实现无动态内存分配
  • 消息过滤器

    • 支持为每个话题和订阅者注册过滤器,只接受符合条件的消息
  • 订阅回调

    • 订阅者可在接收时调用用户回调函数,暂存数据或者转发到另一个话题。
  • 快速配置

    • 使用格式化输入的方式配置话题,极少的代码量就能实现整个消息网络的搭建
  • 事件触发

    • 以订阅为核心的事件触发器,在保证执行效率的同时,一个触发条件可以对应多个处理函数。
  • 批量筛选

    • 对于条件简单且分支较多的话题,可开启高级过滤器而不需要注册大量函数,现已支持 列表范围分解模式。
  • 日志框架

    • 使用示例程序打印的日志:效果

获取源码

克隆这个仓库

Gitee

Github

git clone https://gitee.com/jiu-xiao/one-message.git

或者使用 git submodule将其包含在你的仓库中

git submodule add https://gitee.com/jiu-xiao/one-message.git <path>

代码结构

OneMessage
├─config
├─src
│ ├─app
│ ├─comp
│ └─core
└─test

文件夹 功能
config 配置文件模板
doc 文档
src/app 应用
src/comp 组件
src/core 核心api
src 用户接口
test 单元测试
example 例程
utils 工具

文档

配置文件

使用说明

开发文档

这个项目的意义

在复杂的工程中,为了实现线程的通信和数据的同步会耗费掉大量的开发时间,但往往bug都会出现在这些地方,所以需要找到一个稳定可靠的方案。OneMessage即是解决这个问题的一次尝试。

About

一个基于发布-订阅模型的多线程消息框架,用于嵌入式平台,纯C实现,性能和灵活性极高

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 89.3%
  • CMake 6.1%
  • Python 4.6%

AltStyle によって変換されたページ (->オリジナル) /