boost库 tbb_c++ 最简单的TBB示例
这里有几个完整的例子,一个使用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示例相关推荐
- C++ Boost库:简介和第一个示例程序
文章目录 1. 简介 2. Boost库开发环境搭建 3. 一个简单的示例程序 4. hpp文件简介 C++ Boost库:简介和第一个示例程序 C++ Boost库:数值转换 lexical_cas ...
- boost库 tbb_c++并行计算库TBB和PPL的基本用法
并行库充分利用多核的优势,通过并行运算提高程序效率,本文主要介绍c++中两个知名的并行库,一个是intel开发的TBB,一个是微软开发的PPL.本文只介绍其基本的常用用法:并行算法和任务. TBB(I ...
- C++ Boost库:数值转换 lexical_cast
文章目录 1. C/C++数值转换函数 2. boost数值转换lexical_cast C++ Boost库:简介和第一个示例程序 C++ Boost库:数值转换 lexical_cast C++ ...
- C++ Boost库:日期时间库 date_time
文章目录 1. 简介 2. 基本使用 3. date_period类 4. ptime类 5. time_period类 C++ Boost库:简介和第一个示例程序 C++ Boost库:数值转换 l ...
- C++ Boost库:windows下编译Boost库
文章目录 1. 需要编译的boost库 2. 编译步骤 3. 库命名规则 4. VS配置库目录 C++ Boost库:简介和第一个示例程序 C++ Boost库:数值转换 lexical_cast C ...
- Boost正则表达式库regex常用search和match示例 - 编程语言 - 开发者第2241727个问答
Boost正则表达式库regex常用search和match示例 - 编程语言 - 开发者第2241727个问答 Boost正则表达式库regex常用search和match示例 发表回复 Boost ...
- LVGL库实现的简单实时时钟表盘示例代码
LVGL库实现的简单实时时钟表盘示例代码: #include "lvgl.h" #include <time.h>static lv_obj_t * screen; s ...
- 简单解析C++基于Boost库实现命令行
Boost库中默认自带了一个功能强大的命令行参数解析器,以往我都是自己实现参数解析的,今天偶尔发现这个好东西,就来总结一下参数解析的基本用法,该库需要引入program_options.hpp头文件, ...
- Linux下boost库的编译、安装详解
1.下载源文件 去官网下载:http://www.boost.org/ 这里下载最新版本 wget https://dl.bintray.com/boostorg/release/1.64.0/sou ...
最新文章
- 2017-1-7 html元素分类(1)
- QIIME1.9.1-1虚拟机安装配置及挂载外部目录
- R语言:计算各种距离
- Redis第三集:redis-benchmark性能测试
- C语言程序设计 练习题参考答案 第七章 (2) 指针与数组 main函数形参
- 使用noConclict后仍然能够在函数体内继续使用$的方法
- linux更新nvidia驱动程序,[下载]NVIDIA显卡Linux驱动更新304.60
- OpenAI发布CLIP模型快一年了,盘点那些CLIP相关让人印象深刻的工作
- linux 设置时钟 教程,Linux hwclock命令参数及用法详解--Linux显示/设置硬件时钟命令...
- PHP与MySQL动态网站开发:第4版
- 删除excel 2007数据透视表
- QT学习记录:编译错误“no matching function for call toXXX“
- 部分更新没有安装 KB4535102
- 修改linux系统的root用户密码,linux系统下修改root用户密码
- 经典BBS语录2007贺岁版
- [SEO知识]如何通过SEO思维收割各大平台的流量?
- 【C++】初识智能指针:智能在哪?
- Oracle和MySQL不同编码格式下varchar所能存储的中文数量
- HDU 6194	string string string
- c语言 宏定义 条件,c语言宏定义、条件编译