博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TBB介绍
阅读量:4058 次
发布时间:2019-05-25

本文共 1069 字,大约阅读时间需要 3 分钟。

介绍

这篇教程教你怎样使用Intel的Threading Building Blocks(Intel TBB),它是一个库帮助你利用多核提高性能,你不需要是个线程专家,这个项目可能首先看似使人畏惧,但是通常你只需要知道一些关键点就能利用多核处理器来改善你的代码。例如,通过只阅读这篇文档的3.4节,你就能成功实现多线程程序。随着你的专业知识的增长,你可能想要投入到更加复杂的项目中,这些都覆盖在更高级的章节中。

优点

有许多办法都可以做到并行化,从依赖平台线程原语(例如,pthread)到外来的新语言,TBB的优点是它工作在高阶中,而且不需要外部语言或者编译器,你能使用任何支持ISO C++的编译器。TBB不同于传统线程包如下:

  • Intel TBB替你指定合理的并行,代替自己线程化。大多数线程包需要你指定线程。直接对线程编程是冗长的并且导致无效的编程,因为线程是低阶的,需要接近硬件的重构造,直接利用线程编程强迫你把逻辑任务映射到线程中,相反,Intel TBB 运行时库自动把逻辑并行映射到现在中,有效利用处理器资源。
  • Intel TBB目标是性能。大多数通用线程包支持许多不同种线程,例如异步事件线程,结果,通用包趋向提够基础的低阶工具,而不是解决方案。替代,Intel TBB关注并行计算密集工作的目的,传递高阶,更简单的解决方案。
  • Intel TBB和其他线程包兼容。因为库没有设计解决所有线程问题,它能和其他线程包无缝共处。
  • Intel TBB强调可扩展,数据并行编程。把程序分成独立的函数块,把独立的线程分配给每个函数块是一个解决方案,但是这样扩展性不好,因为函数块的数量是固定的。相反,Intel TBB强调数据并行编程,使多个线程工作在数据集中不同部分,数据并行编程扩展性很好,处理器数量变大会把数据集分成更小的片段。利用数据并行编程,当你增加处理器时,程序性能也提高。
  • Intel TBB依赖泛型编程。传统的库接口依据指定类型或者基类,而TBB使用泛型编程,泛型编程的本质是利用最少的约束写出最好的算法。C++的STL就是一个泛型编程很好的例子,接口是根据所需类型指定的。

编译

命令行编译debug:

这里写图片描述
把_debug去掉就是编译release。

初始化和终结TBB库

Intel TBB2.2自动初始化任务调度,参考文档描述怎样使用类task_scheduler_init显示初始化任务调度,显示初始化有以下好处:

  • 控制任务调度什么时候构造,什么时候析构。
  • 指定任务调度所使用的线程数。
  • 指定工作线程的堆栈大小。
你可能感兴趣的文章
利用负载均衡优化和加速HTTP应用
查看>>
消息队列设计精要
查看>>
分布式缓存负载均衡负载均衡的缓存处理:虚拟节点对一致性hash的改进
查看>>
分布式存储系统设计(1)—— 系统架构
查看>>
MySQL数据库的高可用方案总结
查看>>
常用排序算法总结(一) 比较算法总结
查看>>
SSH原理与运用
查看>>
SIGN UP BEC2
查看>>
S3C2440中对LED驱动电路的理解
查看>>
《天亮了》韩红
查看>>
Windows CE下USB摄像头驱动开发(以OV511为例,附带全部源代码以及讲解) [转]
查看>>
出现( linker command failed with exit code 1)错误总结
查看>>
iOS开发中一些常见的并行处理
查看>>
iOS获取手机的Mac地址
查看>>
ios7.1发布企业证书测试包的问题
查看>>
如何自定义iOS中的控件
查看>>
iOS 开发百问
查看>>
Mac环境下svn的使用
查看>>
github简单使用教程
查看>>
如何高效利用GitHub
查看>>