LIBLSX - 轻量级 C++ 跨平台工具库
本文最后更新于:2025年10月20日 下午
LIBLSX - 轻量级 C++ 跨平台工具库
LIBLSX 是一个轻量级、跨平台的 C++ 工具库,旨在为开发者提供高效且易用的基础组件。当前已开发完成 线程管理(Thread)、数据通信(DataTransfer)、内存管理(Memory)、锁管理(LockManager) 和 日志系统(Logger) 五大核心模块。
项目地址:LIBLSX Github
功能特性
1. Thread 模块
- 线程生命周期管理:通过 
ThreadWrapper实现线程的启动、停止、暂停、恢复。 - 灵活任务绑定:支持 Lambda、自由函数、成员函数、函数对象等多种任务类型。
 - 任务调度器:
Scheduler支持一次性延迟任务和周期性任务调度。 - 线程池:
ThreadPool管理多个工作线程并执行任务队列中的任务。 - 跨平台兼容:基于 C++11 标准线程库,适配 Windows/Linux/macOS。
 
2. DataTransfer 模块
- 统一通信接口:通过 
ICommunication抽象 UDP/TCP/串口等通信协议。 - 多协议支持:
- 网络协议:UDP(客户端/服务器/广播/多播)、TCP(客户端/服务器)。
 - 串口通信:跨平台串口读写,支持超时配置。
 
 - 线程安全设计:内置锁机制保障多线程安全,RAII 管理资源。
 - 工厂模式创建实例:通过 
CommunicationFactory快速创建各类通信实例。 
3. Memory 模块
- 模块化设计:包含 FIFO 队列、管道、循环队列、共享内存、内存缓冲区等组件。
 - 线程安全:所有组件均支持多线程安全访问。
 - 灵活的数据结构:支持固定大小块管理和动态内存缓冲区。
 - 跨平台:适配 Windows 和 POSIX 系统(Linux/macOS)。
 
4. LockManager 模块
- RAII 原则封装:基于 RAII (Resource Acquisition Is Initialization) 机制,自动管理互斥量的加锁与解锁,确保资源在作用域结束或异常抛出时被正确释放,极大提升并发代码的安全性、可读性、健壮性和可维护性。
 - 多种锁类型支持:全面支持 C++ 标准库提供的各类互斥量,包括 
std::mutex(独占)、std::recursive_mutex(递归)、std::timed_mutex(定时独占)、std::shared_mutex(读写锁) 和std::shared_timed_mutex(定时读写锁)。 - 死锁自动避免:
MultiLockGuard类利用 C++17 的std::scoped_lock,在单个原子操作中同时获取多个互斥量,内置死锁避免算法,从根本上解决多锁场景下的死锁问题。 - 条件变量支持:
Condition类封装std::condition_variable_any,提供强大的线程间协作和同步机制,并通过强制使用谓词 (predicate) 有效避免“虚假唤醒”。 - C++17 标准兼容:充分利用 
if constexpr、std::scoped_lock、std::is_same_v等 C++17 特性,提供更高效、更简洁的实现。 
5. Logger 模块
- 多线程安全:内部使用互斥锁和原子操作,确保在多线程环境下的日志写入安全。
 - 跨平台支持:主要依赖 C++ 标准库,兼容 Windows/Linux/macOS。
 - 日志级别控制:支持 DEBUG, INFO, WARNING, ERROR 四种级别,可动态调整。
 - 多种输出目标:支持控制台 (Console) 和本地文件 (File) 输出。
 - 动态切换输出:可在运行时动态切换日志的输出目标。
 - 文件日志轮转:文件输出模式下,支持按最大行数限制进行日志轮转,保留最新日志。
 - 灵活配置:通过 
LoggerConfig进行初始化配置。 - 清晰的日志格式:包含时间戳、线程ID、级别、代码位置 (文件、行号、函数) 和消息。
 - 便捷宏定义:提供 
LSX_LOG_DEBUG,LSX_LOG_INFO等宏简化日志调用。 
快速开始
前置条件
- C++17 或更高版本的编译器。
 - 将 LIBLSX 库导入项目。
 
代码示例
线程任务调度
1  |  | 
内存管理
1  |  | 
锁管理 (LockManager)
1  |  | 
日志系统 (Logger)
1  |  | 
模块文档
| 模块 | 功能说明 | 详细文档链接 | 
|---|---|---|
| Thread | 线程管理与任务调度 | Thread 模块文档 | 
| DataTransfer | 网络与串口通信 | DataTransfer 模块文档 | 
| Memory | 内存管理与数据结构 | Memory 模块文档 | 
| LockManager | RAII 锁管理与并发原语 | LockManager 模块文档 | 
| Logger | 轻量级多功能日志系统 | Logger 模块文档 | 
项目状态与贡献
- 当前版本:v0.1.0(开发中)
 - 待开发模块:数据库模块、Web模块等。
 - 欢迎贡献:欢迎提交 Issue 或 PR,共同完善功能模块。请遵循项目的代码规范与协议。
 
许可证
本项目采用 MIT 许可证。详情请参阅 LICENSE 文件。
LIBLSX - 轻量级 C++ 跨平台工具库
https://jinbilianshao.github.io/2025/07/06/LIBLSX-轻量级-C-跨平台工具库/
