c_cpp 多线程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 多线程相关的知识,希望对你有一定的参考价值。

#include "pch.h"
#include "fps_stats.hpp"
#include <opencv2/opencv.hpp>
#include <string>
#include <list>
#include <thread>


std::list<cv::Mat> frames;
cv::VideoCapture cap;
bool isRun;

// thread function for video getting and show
void StreamThread(bool &isRun)
{
	cv::Mat image;
	while (isRun) {
		cap >> image;
		frames.push_back(image.clone());
	}
}


int main(int, char)
{
	cap.open(0);

	//open check
	if (!cap.isOpened()) {
		std::cerr << "Stream open failed : " << std::endl;
		return 1;
	}

	isRun = true;
	// thread run
	std::thread t1(&StreamThread, std::ref(isRun));

	fps_stats fps{ "Video" };

	//Mat draw only in the main function.
	while (isRun) {

		if (frames.size() > 1) {

			cv::Mat image = frames.front();
			cv::imshow("test", image);
			frames.pop_front();

			if (cv::waitKey(30) >= 0)
				break;
			fps.tick();
		}
	}

	if (t1.joinable()) {
		isRun = false;
		t1.join();
	}

	return 0;
}

以上是关于c_cpp 多线程的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp [测试]#C ++#多线程

c_cpp 多线程QA.cpp

c_cpp 使用evhttp的多线程HTTPServer

c_cpp 多线程应用程序,用于添加整数数组。

c_cpp 如何“多线程”Arduino(Protothreading教程) - 来自https://create.arduino.cc/projecthub/reanimationxp/how-to

c_cpp 在后台运行线程