CV09_01:TBB多任务编程

2020-03-15  本文已影响0人  杨强AT南京

TBB与OpenCV

下载与安装

例子与编译

  1. 代码-并行找出1-100之间的素数
#include<iostream>
#include<tbb/tbb.h>
using namespace std;
using namespace tbb;

int is_prime(int x)
{
    int i;
    if (x <= 1) {       // 从2开始
        return 0;
    }
    for (i = 2; i * i <= x; ++i) {
        if (x % i == 0) {   /*合数 */
            return 0;
        }
    }
    return 1;
}
class FindPrime {
    public:
    void operator() (const blocked_range < size_t > &r)const {
        for (size_t i = r.begin(); i != r.end(); ++i) {
            if (is_prime(i)) {
                cout << i << " ";
            }
        }
    }
};
int main(int argc, char *argv[])
{
    size_t end = 100;   // 默认找1-100之间素数
    // 创建并行任务,每个任务处理一个素数的判定,并输出
    parallel_for(blocked_range <size_t> (0, end), FindPrime());
    cout << endl;
    return 0;
}

  1. 编译脚本
INCLUDES   = /I "C:\Program Files\tbb\include" 

LIBS       = /LIBPATH:"C:\Program Files\tbb\lib\intel64\vc14"  \
             /DYNAMICBASE \
                "tbb.lib"


CL_ARGS    = /EHsc  \
             /MDd \
             /source-charset:utf-8  \
             /execution-charset:utf-8 \
             /nologo

LINK_ARGS  = /DEBUG /MACHINE:X64 /NOLOGO

OUTFILE    = main.exe
# SOURCE     = tbb_main.cpp
SOURCE     = tbb_prime.cpp
OBJS       = tbb_main.obj

$(OUTFILE):$(SOURCE)
    @cl /c $(CL_ARGS) /Fo:$(OBJS) $(INCLUDES)  $(SOURCE) 
    @link $(LINK_ARGS) $(LIBS) /OUT:$(OUTFILE) $(OBJS)
clean:
    @del *.obj *.exe *.pdb *.ilk 2>/Nul

  1. 计算结果
体验TBB的多任务
上一篇 下一篇

猜你喜欢

热点阅读