多线程c++队列的使用
来源:互联网 发布:windows程序设计学什么 编辑:程序博客网 时间:2024/06/06 19:17
我有一个队列的全局变量,然后一个线程不断的获取数据,向这个队列里面压入,然后另一个线程每次读取队列的第一个元素,然后删掉。
#include<iostream>#include<queue>#include<windows.h>#include<stdlib.h>#include<process.h>#include<opencv2/core/core.hpp>#include<opencv2/imgproc/imgproc.hpp>#include<opencv2/highgui/highgui.hpp>using namespace std;using namespace cv;CRITICAL_SECTION g_cs;VideoCapture cap;std::queue<Mat> myQ;unsigned int __stdcall producer(PVOID para){int i = 0;Mat frame;while (1){cap >> frame;EnterCriticalSection(&g_cs);myQ.push(frame.clone());LeaveCriticalSection(&g_cs);//i++;Sleep(2);}}unsigned int __stdcall consumer(PVOID para){int i = 0;Mat frame;while (1){while (myQ.empty())Sleep(2);EnterCriticalSection(&g_cs);//cout << myQ.front()<<" ";frame = myQ.front();myQ.pop();LeaveCriticalSection(&g_cs);Sleep(2);imshow("frame", frame);waitKey(1);i++;if (i >= 1000){i = 0;EnterCriticalSection(&g_cs);//一次性清空队列里的所有数据while (myQ.size())myQ.pop();LeaveCriticalSection(&g_cs);Sleep(2);}}}int main(){cap.open(0);//初始化关键段InitializeCriticalSection(&g_cs);HANDLE tid1, tid2;tid1 = (HANDLE)_beginthreadex(NULL, 0, producer, NULL, 0, NULL);tid2 = (HANDLE)_beginthreadex(NULL, 0, consumer, NULL, 0, NULL);/*等待两个线程结束,这是必须要有的,否则主程序线程和其它子线程是同时执行的,主线程开完子线程之后,直接return 0,退出了,子线程也就退出了*///linux中也有类似的,pthread_joinWaitForSingleObject(tid1, INFINITE);WaitForSingleObject(tid2, INFINITE);CloseHandle(tid1);CloseHandle(tid2);DeleteCriticalSection(&g_cs);system("pause");return 0;}
阅读全文
0 0
- 多线程c++队列的使用
- 多线程+队列的简单使用
- IOS多线程及队列的使用
- IOS多线程及队列的使用
- IOS多线程及队列的使用
- IOS多线程及队列的使用
- c-多线程使用的注意事项
- c语言数据结构应用-数组队列(无锁队列)在多线程中的使用
- linux多线程编程(C):信号量实现的线程安全队列
- linux多线程编程(C):互斥量实现的线程安全队列
- c语言实现多线程下的链表队列
- 简单的使用消息队列的多线程通信
- linux c 消息队列的使用
- c++STL中优先队列的使用
- 【C++】STL队列和栈的使用
- 【day0414 C++】queue 队列的使用
- 【day0414 C++】优先级队列 priority_queue的使用
- C++STL系列 队列的使用
- 快速排序基本思想以及代码实现
- spring学习之---基于XML Schema的简化配置方法
- Python threading 多线程控制和处理
- 理解HTTP幂等性
- 【线性代数】在空间中的向量、矩阵与行列式
- 多线程c++队列的使用
- Android-notification
- java圧縮
- Java文件字节输入流(FileInputSream)文件字节输出流(OutputStream),字符输入输出流(FileReader/FileWriter)
- 开始学习吧
- WebService
- bzoj P3195 [Jxoi2012]奇怪的道路
- 文章标题
- iOS学习笔记-083.倒影效果