13、多线程编程库的全面解析与应用

多线程编程库的全面解析与应用

1. OpenMP 概述

OpenMP 规范包含众多指令、环境变量和 API。具体细节可查阅规范文档: http://www.openmp.org 。其实现依赖于具体情况,但在运行时很可能是系统可用的核心数量。

2. Intel Threading Building Blocks(TBB)

Intel TBB 是基于 C++ 模板的库,专注于循环级并行,着重定义任务而非显式线程。其组件包括通用并行算法、并发容器、低级同步原语和任务调度器。TBB 有商业版和开源版,目前最新版本是 2.1。

2.1 TBB 任务调度

程序员使用 TBB 时,可将循环迭代块视为任务,由任务调度器决定任务大小、线程数量、任务分配及线程调度。任务调度器会优先处理最近在核心中执行的任务,以充分利用可能包含任务数据的缓存,并采用任务窃取机制实现负载均衡。

2.2 通用并行算法
  • parallel_for :并行处理 for 循环内的任务,需要范围类型和主体类型两个参数。范围类需定义复制构造函数、析构函数、 is_empty() is_divisible() 和拆分构造函数。TBB 库有预定义的 blocked_range blocked_range2D 范围类型,分别用于一维和二维范围。主体类需定义复制构造函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值