# eventbus_cpp **Repository Path**: fumintec/eventbus_cpp ## Basic Information - **Project Name**: eventbus_cpp - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-09 - **Last Updated**: 2026-01-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # EventBus 构建说明 ## EventBus 特性 EventBus 是一个轻量级、类型安全的 C++ 事件总线实现,提供以下核心特性: ### 核心特性 - **类型安全**:基于模板实现,编译时类型检查,避免类型错误 - **线程安全**:支持多线程环境下的安全发布和订阅 - **多订阅者**:同一事件类型可以有多个订阅者,事件会分发给所有订阅者 - **任意数据类型**:支持任何 C++ 数据类型作为事件,包括结构体、类、基本类型等 - **简单易用**:简洁的 API 设计,只需 subscribe 和 publish 两个核心方法 - **高性能**:高效的回调机制,最小化运行时开销 - **回调函数**:支持函数指针和 lambda 表达式作为事件处理器 ### 注意事项 不通事件类型之间并发执行,相同事件间保序处理。可自行修改去除该特性全部并发处理。 ### 使用场景 EventBus 适用于需要解耦组件间通信的场景: - UI 事件处理 - 模块间通信 - 异步任务通知 - 消息传递系统 - 事件驱动架构 ### API 示例 ```cpp // 订阅事件 EventBus::instance().subscribe(handler_function); // 发布事件 EventBus::instance().publish(MyEvent{/* data */}); ``` 详细使用方法请参考 [示例程序](example/simple_example.cpp)。 ## 前提条件 - CMake >= 3.0 - C++11 或更高版本的编译器 - pthread 库 - Google Test (可选,仅在构建测试时需要) ## 基本构建 ### 构建主库和示例 ```bash mkdir build cd build cmake .. make ``` 这会构建: - eventbus 库 - simple_example 示例程序 ### 构建并启用测试 ```bash mkdir build cd build cmake .. -DBUILD_TESTING=ON make ``` 这会额外构建所有测试程序: - test_simple - test_eventbus_basic - test_eventbus_concurrent - test_event_ordering ### 运行测试 ```bash # 运行所有测试 ./run_tests.sh # 或单独运行某个测试 ./tests/test_simple ./tests/test_eventbus_basic ./tests/test_eventbus_concurrent ./tests/test_event_ordering ``` ## CMake 选项 ### BUILD_TESTING 控制是否编译测试。 - **默认值**: `ON` - **用法**: ```bash # 启用测试(默认) cmake .. -DBUILD_TESTING=ON # 禁用测试 cmake .. -DBUILD_TESTING=OFF ``` ## 项目结构 ``` eventbus_cpp/ ├── include/ # 头文件 │ ├── eventbus.h │ ├── callback_vector.h │ └── threadpool.h ├── example/ # 示例程序 │ └── simple_example.cpp ├── tests/ # 测试程序(仅当 BUILD_TESTING=ON 时编译) │ ├── test_simple.cpp │ ├── test_eventbus_basic.cpp │ ├── test_eventbus_concurrent.cpp │ └── test_event_ordering.cpp ├── CMakeLists.txt # 主 CMake 配置 └── run_tests.sh # 运行所有测试的脚本 ``` ## 运行示例 ```bash cd build ./example/simple_example ``` ## 清理构建 ```bash cd build make clean # 或删除整个 build 目录 cd .. rm -rf build ``` ## 编译选项 项目使用以下编译标志: - `-Wall` - 启用所有警告 - `-Wextra` - 启用额外的警告 - `-std=c++11` - 使用 C++11 标准 - `--whole-file` - 启用全文件编译 可以在 CMakeLists.txt 中修改 `CMAKE_CXX_FLAGS` 来调整编译选项。