本帖最后由 DeHby 于 2026-4-14 10:05 编辑
workspace 是基于 C++11 的轻量级异步执行框架,支持:通用任务异步执行、优先级任务调度、自适应动态线程池、高效静态线程池、异常处理机制等。
项目在原作者 Lwhyz/workspace 的基础上进行增强与重构,保持核心架构稳定的同时引入了诸多优化与新特性,包含了性能优化、接口重构、新的模块、丑陋的高版本语法模拟。
✨ 核心特性
-
⚙️ Header-only:轻量设计,仅需引入头文件即可使用。
-
🚀 高并发性能:支持异步顺序执行,极大提高多任务并发效率。
-
🔧 灵活可定制:支持多种任务类型、动态线程调整、线程池策略灵活组合。
-
🛠️ 稳定性强:封装 function_ 优化小任务性能,内置异步异常处理机制。
-
🌐 良好兼容性:纯 C++11 实现,跨平台支持,兼容 C++11 及以上标准。
📌 使用说明
#include <workspace/dynbranch.hpp>
int main()
{
// 创建动态线程池 以CPU核心数 0.5倍 ~ 1倍作为大小区间动态调整
wsp::details::dynbranch worker(wsp::details::cpu_multiple_tag, 0.5, 1);
// 投递5个任务
for (int i = 0; i < 5; i++) {
worker.submit([i](int timeout) {
std::this_thread::sleep_for(std::chrono::milliseconds(timeout));
std::printf("taskID:%d\n", i);
}, 100 * i);
}
// 等待所有任务
worker.wait_tasks();
// 创建一个future任务
auto task_future = worker.submit_future([](int a, int b) {
return a + b;
}, 1, 2);
auto result = task_future.get();
std::printf("计算结果:%d\n", result);
return 0;
}
🧬衍生增强
-
VS2015 兼容性增强:修复模板推导、构造顺序等兼容性问题。
-
worker线程残留修复:解决 Windows 下 worker 线程因异常退出未正常析构的问题(std::thread太垃了)。
-
增加dynbranch模块,该模块是workbranch与supervisor轻量包装,上手就可使用的动态线程池类,大部分的接口都是模板转发语法,简洁清晰。
-
重写supervisor模块,解耦 tick 回调与线程检查频率,加入了更合理的线程增长/收缩策略(偏离原设计但更实用)
-
重构workbranch模块,让workbranch更专注于静态线程池的职责,增加合并了许多任务提交接口,不在局限于无参数的方法
💬 致谢
感谢原作者 Lwhyz 的项目初稿及设计理念。我们在其基础上做出了更大胆的探索和扩展,旨在构建更高效、灵活的任务调度模型。
📎 链接
|