线程池与并发执行
Thread Pool & Concurrency
通过线程池、任务分组和并行执行策略管理计算密集型工作负载
子问题
1.任务分组与等待
2.CPU 核绑定优化
3.查询与后台任务隔离
4.Closure 类型擦除统一回调接口
5.std::call_once 线程安全延迟初始化
6.多语言层(C++/Python)并发模型一致性
各项目的解法1 solutions
Signals
横向对比
| 维度 | zvec |
|---|---|
| 线程池实现 | 自研 ailego::ThreadPool,C++ condition_variable + atomic 计数器 |
| 任务分组 | TaskGroup 内嵌类,shared_ptr 引用计数 + pending/active 双计数器 |
| 同步原语 | TaskControl 单任务同步等待 + TaskGroup 批量等待 + 全局 wait_finish |
| 资源隔离 | GlobalResource 单例管理 query/optimize 两个物理隔离线程池 |
| 容器感知 | CgroupUtil 读取 cgroup v1/v2 CPU 配额作为线程数默认值 |
| CPU亲和性 | Linux pthread_setaffinity_np 按 i%hc 轮询绑核 |
| 多语言支持 | C++ 核心层 + Python ThreadPoolExecutor 上层封装 |
最佳实践
1.分离查询线程池和优化线程池避免互相干扰
2.用 CgroupUtil 替代 hardware_concurrency 适配容器环境
3.TaskGroup 的 pending+active 双计数器避免 wait_finish 提前返回
4.Python 层通过环境变量控制并发度实现运行时可调