You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

oneTBB线程池自动销毁机制解析及可借鉴设计探究

线程池自动销毁的设计疑问(基于oneTBB的改进)

以下是相关代码:

int main() {
  auto po = std::execution::par_unseq;
  
  // 若Parallel STL以TBB为后端,线程池应在首次调用for_each()时创建
  std::for_each(po, begin, end, unaryFun);  
  // 工作线程进入休眠状态
  
  // ... 主线程执行其他任务
  
  std::for_each(po, begin, end, unaryFun); // 线程唤醒并再次运行
  
  // ... 主线程执行其他任务
  
} // 即将退出作用域时,线程池如何得知要自行销毁?

旧版TBB存在内存泄漏问题,使用sanitizer编译时需设置export ASAN_OPTIONS=alloc_dealloc_mismatch=0避免崩溃,该泄漏正是线程池未在作用域结束时销毁所致。

新版oneTBB已解决此问题,显然其解决方案不会是在每次for_each()调用内构造并销毁线程池(这会带来极大的性能开销),我想了解oneTBB如何让线程池在作用域结束时自动销毁,以便将该设计思路应用到其他结构中。

内容的提问来源于stack exchange,提问作者user2961927

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 02:34:53