问题域/PD-233

线程池与并发执行

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 层通过环境变量控制并发度实现运行时可调