Qt 多线程学习
来源:互联网 发布:如何查询淘宝购买记录 编辑:程序博客网 时间:2024/06/06 07:20
前些天使用Qt的多线程写了一些东西,因为是关于视频流的处理和转发的,所以采用多线程可以有效提升CPU的效率,对于视频的处理放在主线程之外,新开一个线程对于提升响应速度,提升效率非常重要。
最开始作为入门我也想用比较普遍的方法:继承QThread并且重写 void run()函数。这个方法其实挺简单的,就是自己写一个MyThread类继承QThread,比如说:
#ifndef MYTHREAD_H#define MYTHREAD_H#include <QThread>#include <iostream>class MyThread : public QThread{ Q_OBJECTpublic: MyThread(); void stop();protected: void run(); private: volatile bool stopped;};#endif // MYTHREAD_H
这样的话,在.cpp文件中就可以
void Thread::run(){ while(!stopped) { //do something... } stopped = false;}void Thread::stop(){ stopped = true;}
在run中可以调用该函数,在stop中就结束这个进程。
但是后来发现,如果是我自己的线程函数有参数,和返回值,run()函数就不行了,我不太清楚重载这个函数行不行,所以就试了另一种方法,这种方法对于带参数和返回值的Qt多线程是有效的:
比如说我在.h文件中有一个线程函数: uint rtsptrans(int a);
那么首先调用头文件:
#include <QtConcurrent/QtConcurrentRun>#include <QProcess>#include <QFuture>
然后调用的只需要用run函数调用函数与它的参数列表就行了。比如:
int integer=100;//函数的参数,这里是举一个例子 QFuture<uint> future=QtConcurrent::run(this,&video::rtsptrans,integer);//调用函数,注意后面的参数 uint res = future.result();//获得返回值
阅读全文
1 0
- Qt多线程学习:创建多线程
- Qt多线程学习:创建多线程
- Qt多线程学习:创建多线程
- Qt多线程学习:创建多线程
- Qt多线程学习:创建多线程
- Qt多线程学习:创建多线程
- Qt多线程学习 ( 2 )
- QT多线程的学习
- Qt多线程学习
- Qt 多线程学习
- Qt多线程学习
- Qt 多线程学习
- Qt 多线程学习(1)
- Qt学习 之 多线程程序设计
- QT学习笔记18多线程
- 浅谈 Qt 多线程类 起点学习
- Qt学习笔记(十)多线程
- [Qt学习篇]Qthread实现多线程操作
- lanproxy 使用教程 内网穿透软件
- Ubuntu下安装Tensorflow
- Maven打包无法将mapper.xml打进war包
- 递归算法
- 【第七届蓝桥杯】煤球数目
- Qt 多线程学习
- LeetCode算法题——Max Area of Island
- get请求传中文的几种方法
- 隐马尔科夫模型(一)
- c#的结构,部分类
- yum局域网软件源搭建
- Maven教程-解决web项目发布到tomcat中没有lib依赖的问题
- ActiveMQ的消息签收机制
- 第二十天总结