TBB(Thread Building Blocks),线程构建模块,是由Intel公司开发的并行编程开发工具,提供了对Windows,Linux和OSX平台的支持。

TBB for Windows 官方下载链接: 点击打开链接

TBB的VS编译环境的配置步骤:

1.  在系统的用户变量和系统变量里加入TBB的dll路径:

右击我的电脑->属性->高级系统设置->环境变量,在用户变量和系统变量里的path变量(没有则新建一个)里分别加入TBB的dll所在路径。我解压出来的TBB文件路径是 “D:\Software\TBB” ,所以在path里加入路径 “D:\Software\TBB\tbb2017_20161128oss\bin\ia32\vc11”

2.  在VS工程里新建一个属性页,在属性页的VC++目录->可执行文件目录里添加路径:D:\Software\TBB\tbb2017_20161128oss\bin\ia32\vc11

3. 在属性页的VC++目录->包含目录里添加路径: D:\Software\TBB\tbb2017_20161128oss\include

4. 在属性页的VC++目录->库目录里添加路径:D:\Software\TBB\tbb2017_20161128oss\lib\ia32\vc11

经过以上4个步骤,TBB的配置就完成了,用一个简单的TBB并行程序验证一下是否配置成功:

#include <tbb/tbb.h>
#include <iostream> using namespace std;
using namespace tbb; int main()
{
parallel_for(0, 10, [](int num) {cout << num << ": Hello TBB!" << endl; });
getchar();
return 0;
}

如果按4个步骤正确配置了,应该有如下杂乱的输出,说明配置OK:

C++中lambda表达式

TBB程序中的parallel_for模板用到了lambda表达式,lambda表达式是C++11新增的特性,允许通过lambda表达式构造匿名函数。匿名函数适合于程序中一些可能只会被调用一次的小函数,把这些小函数重构为匿名函数可以使程序更加简洁优雅。

两个简单的lambda表达式的定义和使用示例:

#include <iostream>

using namespace std;

int main()
{
auto func1 = []() {cout << "Hello Lambda!" << endl; };
func1();
auto func2 = [](int num) {return num + 5; };
cout << func2(5) << endl;
getchar();
return 0;
}

这里定义了一个lambda表达式(函数)func1,auto用来自动获取func1函数的返回值。符号“[ ]”通知编译器接下来要定义的是一个匿名函数,符号“()”里定义传入匿名函数的参数列表,这里为空,在随后的大括号内是函数的具体实现。

VS编译环境中TBB配置和C++中lambda表达式的更多相关文章

  1. Android系统编译环境及连接工具配置

    首先附上官网上关于环境搭建的地址:https://source.android.com/setup/build/initializing 官网目前建议的还是Ubuntu14.04,下面就是用的Ubun ...

  2. 写的非常好的文章 C#中的委托,匿名方法和Lambda表达式

    简介 在.NET中,委托,匿名方法和Lambda表达式很容易发生混淆.我想下面的代码能证实这点.下面哪一个First会被编译?哪一个会返回我们需要的结果?即Customer.ID=5.答案是6个Fir ...

  3. C#中委托、匿名函数、Lambda表达式的一些个人理解

    0x01定义一个委托,相当于定义一个可以存储方法的特殊变量类型 下面我们看具体的代码,通过代码更好理解 delegate void IntMethodInvoker(int x); 这行代码就是声明一 ...

  4. Maven在Windows中的配置以及IDE中的项目创建

    Maven在Windows下的配置 1.Maven下载地址:http://maven.apache.org/download.cgi,下载红框里的版本即可. 2.解压到D盘: 3.修改配置文件sett ...

  5. Editplus配置Java、Python、C/C++ (基于VS2010) 编译环境

    1. 为什么要配置EditPlus使其能够编译运行Java.Python.C/C++等程序? EditPlus是一款轻量级(大约2M)的文本编辑器,实际开发中,只需要关联相应的编译工具就可以化身为一个 ...

  6. OpenCL编译环境配置(VS+Nvidia)

    英伟达的显卡首先要下载安装CUDA开发包,可以参考这里的步骤:   VS2015编译环境下CUDA安装配置 安装好CUDA之后,OpenCL的配置就已经完成了80%了,剩下的工作就是把OpenCL的路 ...

  7. Winpython环境下mayavi配置

    Winpython环境下mayavi配置 在pythonxy中会直接有mayavi软件包,但是所附带的杂包实在太多.本人一直用的是window下的winpython或者linux下的anaconda来 ...

  8. Java JDK 8 安装和环境变量的配置(Linux and Windows)

    Java JDK 8 的安装以及环境变量的配置(Linux and Windows) JDK(Java Development Kit)包含了Java语言的编译器,能够在这里下载: http://ww ...

  9. Struts在Web.xml中的配置及Struts1和Struts2的区别

    (1)配置Struts的ActionServlet     <servlet>元素来声明ActionServlet    <servlet-name>元素:用来定义Servle ...

随机推荐

  1. spark1.3.1使用基础教程 分类: B8_SPARK 2015-04-28 11:10 1651人阅读 评论(0) 收藏

      spark可以通过交互式命令行及编程两种方式来进行调用: 前者支持scala与python 后者支持scala.python与java 本文参考https://spark.apache.org/d ...

  2. 三、链路追踪系统 zipkin

    一.构建项目 用到的依赖直接看pom.xml的注释吧 <?xml version="1.0" encoding="UTF-8"?> <proj ...

  3. sqlplus中怎么将你全部的操作和结果记录保存到你指定的文件里

    [在sqlplus的操作中,非常多时候我们都想把自己的写的sql语句和改动日志或者结果信息做记录] [首先]肯定要正常连接到oralce数据库. [然后] 你用你指定的用户登录到oralce数据库之后 ...

  4. Gora官方文档之二:Gora对Map-Reduce的支持 分类: C_OHTERS 2015-01-31 11:27 232人阅读 评论(0) 收藏

    参考官方文档:http://gora.apache.org/current/tutorial.html 项目代码见:https://code.csdn.net/jediael_lu/mygoradem ...

  5. 并查集(disjoint set)的实现及应用

    这里有一篇十分精彩.生动的 并查集详解 (转): "朋友的朋友就是朋友"⇒ 传递性,建立连通关系 disjoint set,并查集(一种集合),也叫不相交集,同时也是一种树型的数据 ...

  6. 打开cad文件的几种方法

    转自原文 打开cad文件的几种方法 IWorkspaceFactory pWorkspaceFactory; IFeatureWorkspace pFeatureWorkspace; IFeature ...

  7. UVA 1564 - Widget Factory(高斯消元)

    UVA 1564 - Widget Factory 题目链接 题意:n种零件, 给定m个制作时间.每段时间制作k个零件,每种零件有一个制作时间,每段时间用Mon到Sun表示,求每一个零件的制作时间.还 ...

  8. ios开发抽屉效果的封装使用

    #import "DragerViewController.h" #define screenW [UIScreen mainScreen].bounds.size.width @ ...

  9. listener监听器笔记

    listener:三个域对象的监听器,,还有属性的变化. 监听三个域对象的创建和销毁:servletContextListenerservletRequestListenerservletsessio ...

  10. js中如何删除某个元素下面的所有子元素?(两种方法)

    js中如何删除某个元素下面的所有子元素?(两种方法) 一.总结 方法一:通过元素的innerHTML属性 元素element.innerHTML=""; 方法二:通过元素的remo ...