4.QT中进程操作,线程操作



  1. QT中的线程操作

T19Process.pro

SOURCES
+=
\

   
main.cpp

 

CONFIG
+=
C++11

main.cpp

#include <QCoreApplication>
#include <QProcess>
#include <QDebug>
int main(int argc, char** argv)
{
    QCoreApplication app(argc, argv);
 
    QProcess process;
    // process.start("/home/xuegl/T0718/build-T18Database-Desktop-Debug/T18Database");
    process.start("ssh root@42.121.13.248");
    // process.start("ssh", QStringList() << "root@42.121.13.248" << "aa" << "bbb");
    // process.write("1\n", 2);
    process.waitForFinished();
 
    // process.waitForFinished();
    qDebug() << process.readAll();
    // qDebug() << process.exitCode();
 
    return app.exec();
}
  1. 多线程(可以通过moveToThread(QThread *)的方法指定给指定的线程)

新建项目T20Thread,项目代码如下:

T20Thread.pro

HEADERS
+=
\

   
Worker.h
\

   
MyThread.h

 

SOURCES
+=
\

   
Worker.cpp
\

   
MyThread.cpp
\

   
main.cpp

Worker.h

#ifndef
WORKER_H

#define
WORKER_H

 

#include
<QObject>

#include
<QThread> 
//要开启线程的时候需要使用头文件<QThread>

#include
<QDebug>

class
Worker
:
public
QObject

{

   
Q_OBJECT

public:

   
explicit
Worker(QObject
*parent
= 0);

 

   
QThread
_thread;

 

   
bool
event(QEvent
*ev)

   
{

       
//通过QThread::currentThread()可以获得当前线程信息

       
qDebug()
<<
"event:"
<<
QThread::currentThread();

       
return
QObject::event(ev);

   
}

signals:

 

public
slots:

   
void
doWork()

   
{

       
qDebug()
<<
QThread::currentThread();

   
}

};

 

#endif
//
WORKER_H

Worker.cpp

#include
"Worker.h"

 

Worker::Worker(QObject
*parent)
:

   
QObject(parent)

{

   
//this->moveToThread(&_thread);

   
_thread.start();

   
connect(&_thread,
SIGNAL(finished()),
this,
SLOT(deleteLater()));

}

MyThread.h

#ifndef
MYTHREAD_H

#define
MYTHREAD_H

 

#include
<QThread>

#include
<QDebug>

class
MyThread
:
public
QThread

{

   
Q_OBJECT

public:

   
explicit
MyThread(QObject
*parent
= 0);

 

   
void
foo()

   
{

       
qDebug()
<<
QThread::currentThread();

   
}

 

   
void
run()

   
{

       
foo();

       
qDebug()
<<
"thread
is
run";

   
}

 

signals:

 

public
slots:

 

};

 

#endif
//
MYTHREAD_H

MyThread.cpp

#include
"mythread.h"

 

MyThread::MyThread(QObject
*parent)
:

   
QThread(parent)

{

}

main.cpp

#include
<QCoreApplication>

#include
"mythread.h"

#include
"worker.h"

#include
<QTimer>

int
main(int
argc,
char*
argv[])

{

   
QCoreApplication
app(argc,
argv);

#if
0

   
MyThread
thread;

   
thread.start();

 

   
thread.foo();

#endif

 

   
qDebug()
<<
"main
thread
is"<<QThread::currentThread();

   
Worker*
worker
=
new
Worker();

   
QTimer*
timer
=
new
QTimer;

   
//worker->moveToThread(&thread);

 

   
QObject::connect(timer,
SIGNAL(timeout()),
worker,
SLOT(doWork()));

   
timer->setInterval(1000);

   
timer->start();

 

   
return
app.exec();

}

运行结果:

 

时间: 2024-11-03 01:14:10

4.QT中进程操作,线程操作的相关文章

4.关于QT中的QFile文件操作,QBuffer,Label上添加QPixmap,QByteArray和QString之间的区别,QTextStream和QDataStream的区别,QT内存映射(

 新建项目13IO 13IO.pro HEADERS += \     MyWidget.h   SOURCES += \     MyWidget.cpp   QT += gui widgets network CONFIG += C++11 MyWidget.h #ifndef MYWIDGET_H #define MYWIDGET_H   #include <QWidget>   class MyWidget : public QWidget {     Q_OBJECT publi

zt:理解Linux中进程,线程等概念

http://www.linuxeden.com/doc/24482.html1 基本概念 1.1. 进程和线程可执行文件由指令和数据组成.进程就是在计算机上运行的可执行文件针对特定的输入数据的一个实例,同一个可执行程序文件如果操作不同的输入数据就是两个不同的进程.线 程是进程的一条执行路径,它包含独立的堆栈和CPU寄存器状态,每个线程共享其所附属的进程的所有的资源,包括打开的文件.页表(因此也就共享整个用户态 地址空间).信号标识及动态分配的内存等等.线程和进程的关系是:线程是属于进程的,线程

[Qt教程] 第39篇 网络(九)进程和线程

[Qt教程] 第39篇 网络(九)进程和线程 楼主  发表于 2013-8-29 15:48:56 | 查看: 415| 回复: 0 进程和线程 版权声明 该文章原创于作者yafeilinux,转载请注明出处! 导语 在前面的几节内容中讲解了Qt网络编程的一些基本内容,这一节来看一下在Qt中进程和线程的基本应用. 环境:Windows Xp + Qt 4.8.5+Qt Creator2.8.0 目录 一.进程 二.线程 正文 一.进程     在设计一个应用程序时,有时不希望将一个不太相关的功能

《Python爬虫开发与项目实战》——1.4 进程和线程

1.4 进程和线程 在爬虫开发中,进程和线程的概念是非常重要的.提高爬虫的工作效率,打造分布式爬虫,都离不开进程和线程的身影.本节将从多进程.多线程.协程和分布式进程等四个方面,帮助大家回顾Python语言中进程和线程中的常用操作,以便在接下来的爬虫开发中灵活运用进程和线程.1.4.1 多进程 Python实现多进程的方式主要有两种,一种方法是使用os模块中的fork方法,另一种方法是使用multiprocessing模块.这两种方法的区别在于前者仅适用于Unix/Linux操作系统,对Wind

Swing中耗时任务需要另起新线程,这个新线程中更新GUI的操作仍需由EDT来做(转)

最近调试程序时发现,点击某个界面时会出现卡死的情况,出现的频率还是比较频繁的. 再次出现卡死的情况后,利用jvisualvm查看线程的运行情况,dump操作之后发现线程间出现了死锁:Found one Java-level deadlock:============================="Thread-122":  waiting to lock monitor 0x484052e4 (object 0x1af2bb08, a com.raisecom.ems.temple

PHP中使用Memache作为进程锁的操作类分享

 这篇文章主要介绍了PHP中使用Memache作为进程锁的操作类分享,本文直接给出类实现代码以及应用示例,需要的朋友可以参考下     ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63

Java中的进程与线程的实现

概述 进程与线程,本质意义上说, 是操作系统的调度单位,可以看成是一种操作系统 "资源" .Java 作为与 平台无关的编程语言,必然会对底层(操作系统)提供的功能进行进一步的封装,以平台无关的编程接口供程序员使用,进 程与线程作为操作系统核心概念的一部分无疑亦是如此.在 Java 语言中,对进程和线程的封装,分别提供了 Process 和 Thread 相关的一些类.本文首先简单的介绍如何使用这些类来创建进程和线程,然后着重介绍这些类是如何和操作系统本 地进程线程相对应的,给出了 J

Android中的进程和线程

进程和线程是现代网络操作系统的核心概念.Android作为一种优秀的.承袭Linux的移动操作系统,其进程和线程的概念是开发者和安全工作人员需要深入了解的问题.本文将详细介绍Android中的进程.线程以及相关的技术问题. 进程和线程的基本概念 当一个应用程序开始运行它的第一个组件时,Android会为它启动一个Linux进程,并在其中执行一个单一的线程.默认情况下,应用程序所有的组件均在这个进程的这个线程中运行.然而,你也可以安排组件在其他进程中运行,而且可以为任意进程衍生出其它线程. And

介绍Java中关于进程与线程的相关封装类

本文主要介绍 Java 中关于进程与线程的相关封装类,揭示如何创建 Java 进程与线程,Java 封装类和实际的系统本地进程和线程是如何对应的,以及使用 Java 进程和线程的一些限制. 进程与线程,本质意义上说, 是操作系统的调度单位,可以看成是一种操作系统 "资源" .Java 作为与平台无关的编程语言,必然会对底层(操作系统)提供的功能进行进一步的封装,以平台无关的编程接口供程序员使用,进程与线程作为操作系统核心概念的一部分无疑亦是如此.在 Java 语言中,对进程和线程的封装