C++多线程实现thread篇

C++多线程实现thread篇

为了优化提高代码效率,往往会用到多线程并行处理,据个人了解可以通过thread、openMP等方法实现,但目前也只是在探索测试阶段,用于记录,如有不当之处,还请高手指教。

下面是thread实现多线程的方法:

#include <iostream>
#include <vector>
#include <algorithm>
#include <thread>

#include <opencv2/opencv.hpp>
using namespace cv;

using namespace std;

void GetImg1()
{
	Mat test1 = imread("test1.jpg");
}

void GetImg2()
{
	Mat test1 = imread("test2.jpg");
}

void GetImg3()
{
	Mat test1 = imread("test3.jpg");
}

void GetImg4()
{
	Mat test1 = imread("test4.jpg");
}

int main() //主线程
{

	double start = static_cast<double>(getTickCount());

	Mat test11 = imread("test1.jpg");
	Mat test12 = imread("test2.jpg");
	//Mat test13 = imread("test3.jpg");
	//Mat test14 = imread("test4.jpg");

	double time = ((double)getTickCount() - start) / getTickFrequency();
	cout << "time1:" << time << endl;

	start = static_cast<double>(getTickCount());

	thread test1(GetImg1); //线程1
	thread test2(GetImg2); //线程2
	//thread test3(GetImg3); //线程3
	//thread test4(GetImg4); //线程4

	test1.join(); 
	test2.join();
	//test3.join();
	//test4.join();

	time = ((double)getTickCount() - start) / getTickFrequency();
	cout << "time2:" << time << endl;

	while (1);

	return 0;
}

测试结果如下:

time1:0.371225
time2:0.17843

图片test1.jpg、test2.jpg、test3.jpg、test4.jpg是一模一样的四张图片,大小也相同,代码中单线程先后读取了test1.jpg、test2.jpg,耗时0.371225s,而加入多线程后,读取两张图片只需要0.17843s,效率确实提高了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值