最近学OpenCV 需要用到并行处理 ,通过查资料发现太乱,有的说明是介绍并行的 却在好长代码里作为演示,让人难以捉摸真正的用法,在此我特意做个简单的实例程序,希望能帮助大家学习 使用节省学习时间。
其优势就是加快处理 同时干多样事情 ,不过也有其不足的地方 那就是多个线程都干完了才进行下面的程序
首先 需要对编译器进行设置:
VS2013 内置了对OpenMP的支持。在项目上右键->属性->配置属性->C/C++->语言->OpenMP支持里选择是:
然后再加如对应的头文件:
//#include "omp.h"
// 多线程演示.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include <windows.h>
//#include "omp.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
#pragma omp parallel sections
{
#pragma omp section
{
Sleep(100);
cout << "多线程1" << endl;
}
#pragma omp section
{
Sleep(50);
cout << "多线程2" << endl;
}
#pragma omp section
{
Sleep(200);
cout << "多线程3" << endl;
}
}
cout << "出多线程" << endl;
return 0;
}
运行结果:
在试验种发现其运行的特点是 必须上面多个线程都结束后 才会进行下面的程序,
如有不妥之处 欢迎指正,也欢迎指出更多方法