C++异步执行框架 支持多种任务调度和线程池管理
workspace是基于C++11的异步执行框架,支持通用任务异步执行、优先级调度、动态线程池和静态线程池。框架提供workbranch、supervisor和workspace等核心模块,以及futures辅助模块,实现高效任务分发和线程池管理。其轻量、高效、灵活的特点适用于高并发C++项目开发。
workspace是基于C++11的轻量级异步执行框架,支持:通用任务异步执行、优先级任务调度、自适应动态线程池、高效静态线程池、异常处理机制等。
std::function
的小任务优化减少内存碎片、拥有良好的异步线程异常处理机制。workbranch(工作分支)是动态线程池的抽象,内置了一条线程安全的任务队列用于同步任务。其管理的每一条异步工作线程被称为worker,负责从任务队列不断获取任务并执行。(以下示例按顺序置于workspace/example/
)
<br>
让我们先简单地提交一点任务,当你的任务带有返回值时,workbranch会返回一个std::future,否则返回void。
#include <workspace/workspace.hpp> int main() { // 2 threads wsp::workbranch br(2); // return void br.submit([]{ std::cout<<"hello world"<<std::endl; }); // return std::future<int> auto result = br.submit([]{ return 2023; }); std::cout<<"Got "<<result.get()<<std::endl; // wait for tasks done (timeout: 1000 milliseconds) br.wait_tasks(1000); }
由于返回一个std::future会带来一定的开销,如果你不需要返回值并且希望程序跑得更快,那么你的任务应该是void()