这里有几个完整的例子,一个使用parallel_for,另一个使用parallel_for_each。

更新2014-04-12:这些显示了我认为是现在使用TBB的漂亮老式的方式;我添加了一个separate answer使用parallel_for与C 11 lambda。

#include "tbb/blocked_range.h"

#include "tbb/parallel_for.h"

#include "tbb/task_scheduler_init.h"

#include

#include

struct mytask {

mytask(size_t n)

:_n(n)

{}

void operator()() {

for (int i=0;i<1000000;++i) {} // Deliberately run slow

std::cerr << "[" << _n << "]";

}

size_t _n;

};

struct executor

{

executor(std::vector& t)

:_tasks(t)

{}

executor(executor& e,tbb::split)

:_tasks(e._tasks)

{}

void operator()(const tbb::blocked_range& r) const {

for (size_t i=r.begin();i!=r.end();++i)

_tasks[i]();

}

std::vector& _tasks;

};

int main(int,char**) {

tbb::task_scheduler_init init; // Automatic number of threads

// tbb::task_scheduler_init init(2); // Explicit number of threads

std::vector tasks;

for (int i=0;i<1000;++i)

tasks.push_back(mytask(i));

executor exec(tasks);

tbb::parallel_for(tbb::blocked_range(0,tasks.size()),exec);

std::cerr << std::endl;

return 0;

}

#include "tbb/parallel_for_each.h"

#include "tbb/task_scheduler_init.h"

#include

#include

struct mytask {

mytask(size_t n)

:_n(n)

{}

void operator()() {

for (int i=0;i<1000000;++i) {} // Deliberately run slow

std::cerr << "[" << _n << "]";

}

size_t _n;

};

template struct invoker {

void operator()(T& it) const {it();}

};

int main(int,char**) {

tbb::task_scheduler_init init; // Automatic number of threads

// tbb::task_scheduler_init init(4); // Explicit number of threads

std::vector tasks;

for (int i=0;i<1000;++i)

tasks.push_back(mytask(i));

tbb::parallel_for_each(tasks.begin(),tasks.end(),invoker());

std::cerr << std::endl;

return 0;

}

两者都使用g tbb_example.cpp -ltbb在Debian / Wheezy(g 4.7)系统上编译(然后以./a.out运行)

(参见this question,用std :: mem_fun_ref或boost :: bind替换“invoker”)。

boost库 tbb_c++ 最简单的TBB示例相关推荐

  1. C++ Boost库:简介和第一个示例程序

    文章目录 1. 简介 2. Boost库开发环境搭建 3. 一个简单的示例程序 4. hpp文件简介 C++ Boost库:简介和第一个示例程序 C++ Boost库:数值转换 lexical_cas ...

  2. boost库 tbb_c++并行计算库TBB和PPL的基本用法

    并行库充分利用多核的优势,通过并行运算提高程序效率,本文主要介绍c++中两个知名的并行库,一个是intel开发的TBB,一个是微软开发的PPL.本文只介绍其基本的常用用法:并行算法和任务. TBB(I ...

  3. C++ Boost库:数值转换 lexical_cast

    文章目录 1. C/C++数值转换函数 2. boost数值转换lexical_cast C++ Boost库:简介和第一个示例程序 C++ Boost库:数值转换 lexical_cast C++ ...

  4. C++ Boost库:日期时间库 date_time

    文章目录 1. 简介 2. 基本使用 3. date_period类 4. ptime类 5. time_period类 C++ Boost库:简介和第一个示例程序 C++ Boost库:数值转换 l ...

  5. C++ Boost库:windows下编译Boost库

    文章目录 1. 需要编译的boost库 2. 编译步骤 3. 库命名规则 4. VS配置库目录 C++ Boost库:简介和第一个示例程序 C++ Boost库:数值转换 lexical_cast C ...

  6. Boost正则表达式库regex常用search和match示例 - 编程语言 - 开发者第2241727个问答

    Boost正则表达式库regex常用search和match示例 - 编程语言 - 开发者第2241727个问答 Boost正则表达式库regex常用search和match示例 发表回复 Boost ...

  7. LVGL库实现的简单实时时钟表盘示例代码

    LVGL库实现的简单实时时钟表盘示例代码: #include "lvgl.h" #include <time.h>static lv_obj_t * screen; s ...

  8. 简单解析C++基于Boost库实现命令行

    Boost库中默认自带了一个功能强大的命令行参数解析器,以往我都是自己实现参数解析的,今天偶尔发现这个好东西,就来总结一下参数解析的基本用法,该库需要引入program_options.hpp头文件, ...

  9. Linux下boost库的编译、安装详解

    1.下载源文件 去官网下载:http://www.boost.org/ 这里下载最新版本 wget https://dl.bintray.com/boostorg/release/1.64.0/sou ...

最新文章

  1. 2017-1-7 html元素分类(1)
  2. QIIME1.9.1-1虚拟机安装配置及挂载外部目录
  3. R语言:计算各种距离
  4. Redis第三集:redis-benchmark性能测试
  5. C语言程序设计 练习题参考答案 第七章 (2) 指针与数组 main函数形参
  6. 使用noConclict后仍然能够在函数体内继续使用$的方法
  7. linux更新nvidia驱动程序,[下载]NVIDIA显卡Linux驱动更新304.60
  8. OpenAI发布CLIP模型快一年了,盘点那些CLIP相关让人印象深刻的工作
  9. linux 设置时钟 教程,Linux hwclock命令参数及用法详解--Linux显示/设置硬件时钟命令...
  10. PHP与MySQL动态网站开发:第4版
  11. 删除excel 2007数据透视表
  12. QT学习记录:编译错误“no matching function for call toXXX“
  13. 部分更新没有安装 KB4535102
  14. 修改linux系统的root用户密码,linux系统下修改root用户密码
  15. 经典BBS语录2007贺岁版
  16. [SEO知识]如何通过SEO思维收割各大平台的流量?
  17. 【C++】初识智能指针:智能在哪?
  18. Oracle和MySQL不同编码格式下varchar所能存储的中文数量
  19. HDU 6194 string string string
  20. c语言 宏定义 条件,c语言宏定义、条件编译

热门文章

  1. 创建物化视图commit_oracle 中物化视图讲解
  2. 7 12次c语言上机作业,第十二次C语言上机实验参考答案
  3. Centos7 cdh5.14 安装
  4. 搜索插入位置的golang实现
  5. 投资的境界:及时抓住机会或止损才是硬道理
  6. CentOS安装ElasticSearch及其问题解决
  7. 5分钟教你Windows 10中将“运行”固定到开始菜单
  8. AndroidStudio-4-如何导入项目
  9. Qt开发,图文详解Hello World全过程
  10. Semplice Linux 3.0.0 发布