zoukankan      html  css  js  c++  java
  • VS编译环境中TBB配置和C++中lambda表达式

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


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




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


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

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


    2.  在VS工程里新建一个属性页,在属性页的VC++目录->可执行文件目录里添加路径:D:SoftwareTBB bb2017_20161128ossinia32vc11


    3. 在属性页的VC++目录->包含目录里添加路径: D:SoftwareTBB bb2017_20161128ossinclude


    4. 在属性页的VC++目录->库目录里添加路径:D:SoftwareTBB bb2017_20161128osslibia32vc11


    经过以上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函数的返回值。符号“[ ]”通知编译器接下来要定义的是一个匿名函数,符号“()”里定义传入匿名函数的参数列表,这里为空,在随后的大括号内是函数的具体实现。


  • 相关阅读:
    PHP保留小数的相关方法
    ASP.NET Core MVC 之过滤器(Filter)
    ASP.NET Core MVC 之控制器(Controller)
    ASP.NET Core MVC 之视图组件(View Component)
    ASP.NET Core MVC 之局部视图(Partial Views)
    标签助手(TagHelper)
    ASP.NET Core MVC 之布局(Layout)
    ASP.NET Core MVC 之视图(Views)
    ASP.NET Core MVC 之模型(Model)
    九卷读书:淘宝从小到大的发展 -重读《淘宝技术这十年》
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9411879.html
Copyright © 2011-2022 走看看