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

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

对于一些循环,迭代空间的结束是未知的,或者循环体在循环结束之前可能增加更多的迭代,你能使用模板类tbb::parallel_do处理这2种情况。

链表是迭代空间未知的例子,在并行编程中,通常使用动态数组代替链表是更好的,因为访问链表的条目本质是串行的,但是如果你被限制使用链表,条目能被安全并行处理,处理每个条目花费至少几千个指令,你能使用parallel_do增加一些并行度。

例如,考虑下面的串行代码:

void SerialApplyFooToList( const std::list
& list ) { for( std::list
::const_iterator i=list.begin() i!=list.end();++i ) Foo(*i);}

如果Foo花费至少几千个指令周期运行,那么你能使用parallel_do来提速,为了这么做,你需要定义一个带const标识的operator()对象:

class ApplyFoo {public:    void operator()( Item& item ) const {        Foo(item);    }};

SerialApplyFooToList的并行格式如下:

void ParallelApplyFooToList( const std::list
& list ) { parallel_do( list.begin(), list.end(), ApplyFoo() );}

转载地址:http://aimci.baihongyu.com/

你可能感兴趣的文章
coursesa课程 Python 3 programming course_2_assessment_8 sorted练习题
查看>>
在unity中建立最小的shader(Minimal Shader)
查看>>
1.3 Debugging of Shaders (调试着色器)
查看>>
关于phpcms中模块_tag.class.php中的pc_tag()方法的含义
查看>>
vsftp 配置具有匿名登录也有系统用户登录,系统用户有管理权限,匿名只有下载权限。
查看>>
linux安装usb wifi接收器
查看>>
多线程使用随机函数需要注意的一点
查看>>
getpeername,getsockname
查看>>
VS 2005 CRT函数的安全性增强版本
查看>>
Visual Studio 2010:C++0x新特性
查看>>
drwtsn32.exe和adplus.vbs进行dump文件抓取
查看>>
cppcheck c++静态代码检查
查看>>
在C++中使用Lua
查看>>
socket编程中select的使用
查看>>
关于无人驾驶的过去、现在以及未来,看这篇文章就够了!
查看>>
所谓的进步和提升,就是完成认知升级
查看>>
为什么读了很多书,却学不到什么东西?
查看>>
长文干货:如何轻松应对工作中最棘手的13种场景?
查看>>
如何用好碎片化时间,让思维更有效率?
查看>>
No.174 - LeetCode1305 - 合并两个搜索树
查看>>