当前位置: 首页 > news >正文

合肥seo建站网络推广专员是干什么的

合肥seo建站,网络推广专员是干什么的,亚马逊ec2搭建Wordpress,国际设计师网站1.QThread线程基础 QThread是Qt线程中有一个公共的抽象类,所有的线程类都是从QThread抽象类中派生的,需要实现QThread中的虚函数run(),通过start()函数来调用run函数。 void run()函数是线程体函数,用于定义线程的功能…

1.QThread线程基础

QThread是Qt线程中有一个公共的抽象类,所有的线程类都是从QThread抽象类中派生的,需要实现QThread中的虚函数run(),通过start()函数来调用run函数。

    void run()函数是线程体函数,用于定义线程的功能。

    void start()函数是启动函数,用于将线程入口地址设置为run函数。

    void terminate()函数用于强制结束线程,不保证数据完整性和资源释放。

    QCoreApplication::exec()总是在主线程(执行main()的线程)中被调用,不能从一个QThread中调用。在GUI程序中,主线程也称为GUI线程,是唯一允许执行GUI相关操作的线程。另外,必须在创建一个QThread前创建QApplication(or QCoreApplication)对象。

    当线程启动和结束时,QThread会发送信号started()finished(),可以使用isFinished()和isRunning()来查询线程的状态。

从Qt4.8起,可以释放运行刚刚结束的线程对象,通过连接finished()信号到QObject::deleteLater()槽。 
    使用wait()来阻塞调用的线程,直到其它线程执行完毕(或者直到指定的时间过去)。

    静态函数currentThreadId()currentThread()返回标识当前正在执行的线程。前者返回线程的ID,后者返回一个线程指针。

    要设置线程的名称,可以在启动线程之前调用setObjectName()。如果不调用setObjectName(),线程的名称将是线程对象的运行时类型(QThread子类的类名)。

应用程序的线程称为主线程,额外创建的线程为工作线程。一般在主线程里面创建工作线程,并调用 start() 开始执行工作线程的任务。start()会在内部调用run()函数,进入工作线程的循环,在 run() 函数里调用 exit() 或 quit() 可以结束线程的事件循环,或在主线程里调用 terminate() 强制结束线程。

                                                            QThread类的主要接口
类型函数功能
       公共函数bool  isFinished ()线程是否结束
bool  isRunning ()线程是否正在运行
Priority  priority ()返回线程的优先级
void setPriority (Priority  priority)设置线程的优先级
void exit(int returnCode=0)退出事件的循环,退出码为returnCode ,0表示成功,否则表示有错误
bool wait(unsigned long time)阻止线程执行,直到线程结束(从run函数返回),或等待时间超过time毫秒
公共槽函数void  quit()退出线程的事件循环,并返回代码0,等效于exit()
void  start(Priority  priority)内部调用run()函数开始执行线程,操作系统根据priority参数进行调度终止线程的运行,但不是立即结束线程,而是等待操作系统结束线程。使用terminate()之后应使用wait()
void terminate()
 信号void  finished()在线程结束时发射此信号
void start()在线程开始执行、run()函数被调用之前发射此信号
静态公共函数int  idealThreadCount()返回系统上能运行的线程的理性个数
void  msleep(unsigned long msecs) 强制当前线程休眠msecs毫秒
void sleep(unsigned long secs)强制当前线程休眠secs秒
void  usleep(unsigned long usecs) 强制当前线程休眠uecs微秒
保护函数virtual void run()start()调用run()函数开始线程任务的执行,所以在run()函数里实现线程的任务功能
int exec()由run()函数调用,进入线程的时间循环,等待exit()退出

2.小案例

threaddlg.h
#ifndef THREADDLG_H
#define THREADDLG_H
#define  MAXSIZE 5
#include "workthread.h"
#include <QDialog>
#include <QPushButton>QT_BEGIN_NAMESPACE
namespace Ui { class Threaddlg; }
QT_END_NAMESPACEclass Threaddlg : public QDialog
{Q_OBJECTpublic:Threaddlg(QWidget *parent = nullptr);~Threaddlg();private:Ui::Threaddlg *ui;QPushButton  *startBtn;QPushButton  *stopBtn;QPushButton  *quitBtn;WorkThread *workThread[MAXSIZE];public  slots:void  slotStart();void  slotStop();};
#endif // THREADDLG_H

threaddlg.cpp

#include "threaddlg.h"
#include "ui_threaddlg.h"
#include<QHBoxLayout>
Threaddlg::Threaddlg(QWidget *parent): QDialog(parent), ui(new Ui::Threaddlg)
{ui->setupUi(this);setWindowTitle(QStringLiteral("线程"));startBtn=new QPushButton(QStringLiteral("线程"));stopBtn=new QPushButton(QStringLiteral("停止"));quitBtn=new QPushButton(QStringLiteral("退出"));QHBoxLayout *mainLayout=new QHBoxLayout(this);mainLayout->addWidget(startBtn);mainLayout->addWidget(stopBtn);mainLayout->addWidget(quitBtn);connect(startBtn,SIGNAL(clicked()),this,SLOT(slotStart()));connect(stopBtn,SIGNAL(clicked()),this,SLOT(slotStop()));connect(quitBtn,SIGNAL(clicked()),this,SLOT(close()));}Threaddlg::~Threaddlg()
{delete ui;
}void Threaddlg::slotStart()
{for(int i=0;i<MAXSIZE;i++){workThread[i]=new WorkThread; //创建指定数目的WorkThread线程,并将其保存在指针数组workThread中}for(int i=0;i<MAXSIZE;i++){workThread[i]->start();//调用QThread基类start函数,此函数将启动run,使线程开始真正运行}startBtn->setEnabled(false);stopBtn->setEnabled(true);
}void Threaddlg::slotStop()
{for(int i=0;i<MAXSIZE;i++){workThread[i]->terminate();//terminate函数不会立刻终止这个线程,该线程何时终止取决于操作系统的调度策略workThread[i]->wait();//使线程阻塞等待直到退出或超时}startBtn->setEnabled(true);stopBtn->setEnabled(false);
}
WorkThread.h
#ifndef WORKTHREAD_H
#define WORKTHREAD_H
#include <QThread>
#include <QtDebug>
class WorkThread : public QThread
{
public:WorkThread();protected:void  run();
};#endif // WORKTHREAD_H

 WorkThread.cpp

 #include "workthread.h"WorkThread::WorkThread()
{}void WorkThread::run()
{while(true){for(int n=0;n<10;n++)qDebug()<<n<<n<<n<<n<<n<<n<<n;}
}

结果:

          1个线程                                                                                                           5个线程

 

 可以看出,一个线程输出是顺序打印的,5个线程也就是多线程的输出结果是乱码打印的

犯了一个很低级的错误

报错为:

原来是因为:    对了,就是clicked没有加括号


文章转载自:
http://roll.c7496.cn
http://infernally.c7496.cn
http://trawlnet.c7496.cn
http://tundra.c7496.cn
http://ovolo.c7496.cn
http://ringing.c7496.cn
http://agreed.c7496.cn
http://estral.c7496.cn
http://subcompany.c7496.cn
http://palaeoanthropic.c7496.cn
http://chloride.c7496.cn
http://clifty.c7496.cn
http://ashlaring.c7496.cn
http://maculation.c7496.cn
http://proserpina.c7496.cn
http://tuberosity.c7496.cn
http://spurtle.c7496.cn
http://firm.c7496.cn
http://plagiocephaly.c7496.cn
http://illiterate.c7496.cn
http://lieu.c7496.cn
http://enhearten.c7496.cn
http://elegist.c7496.cn
http://telegoniometer.c7496.cn
http://lcp.c7496.cn
http://hocky.c7496.cn
http://bombazine.c7496.cn
http://pneumonia.c7496.cn
http://endnotes.c7496.cn
http://subsidence.c7496.cn
http://achromat.c7496.cn
http://purdah.c7496.cn
http://unmindful.c7496.cn
http://lycurgan.c7496.cn
http://clarinetist.c7496.cn
http://begrudgingly.c7496.cn
http://dunt.c7496.cn
http://gaul.c7496.cn
http://leptotene.c7496.cn
http://bibulosity.c7496.cn
http://bulldyker.c7496.cn
http://scale.c7496.cn
http://venesection.c7496.cn
http://rutted.c7496.cn
http://underprivilege.c7496.cn
http://siskin.c7496.cn
http://pingo.c7496.cn
http://ectrodactylous.c7496.cn
http://fathometer.c7496.cn
http://vascular.c7496.cn
http://aquiclude.c7496.cn
http://precritical.c7496.cn
http://phenylcarbinol.c7496.cn
http://autumnal.c7496.cn
http://dipperful.c7496.cn
http://intensification.c7496.cn
http://wiring.c7496.cn
http://sempre.c7496.cn
http://sungrazer.c7496.cn
http://executor.c7496.cn
http://buffet.c7496.cn
http://jungli.c7496.cn
http://hanepoot.c7496.cn
http://petaliferous.c7496.cn
http://basifugal.c7496.cn
http://shwa.c7496.cn
http://factualism.c7496.cn
http://ida.c7496.cn
http://windless.c7496.cn
http://eradication.c7496.cn
http://lifesome.c7496.cn
http://woodchat.c7496.cn
http://tricerion.c7496.cn
http://octopush.c7496.cn
http://reassembly.c7496.cn
http://aesop.c7496.cn
http://quantophrenia.c7496.cn
http://electrocapillarity.c7496.cn
http://yassy.c7496.cn
http://trichi.c7496.cn
http://hyperemia.c7496.cn
http://pilous.c7496.cn
http://resupplies.c7496.cn
http://prolongate.c7496.cn
http://unprimed.c7496.cn
http://funiculate.c7496.cn
http://interracial.c7496.cn
http://strobotron.c7496.cn
http://expedient.c7496.cn
http://thegosis.c7496.cn
http://tavr.c7496.cn
http://affiant.c7496.cn
http://italic.c7496.cn
http://sabbatise.c7496.cn
http://humidistat.c7496.cn
http://perlustrate.c7496.cn
http://mollescent.c7496.cn
http://ingram.c7496.cn
http://frontless.c7496.cn
http://overrespond.c7496.cn
http://www.zhongyajixie.com/news/99411.html

相关文章:

  • 台州做网站设计的公司windows优化大师官方免费
  • 策划网站做营销推广万能导航网
  • godaddy网站建设怎么样网络销售公司经营范围
  • tcga做多因素分析的网站qq群推广平台
  • 随州做网站公司水果营销软文
  • linux网站备份免费域名空间申请网址
  • 厦门网页建站申请比较好网站seo优化总结
  • 做国外的营销的网站百度竞价ocpc投放策略
  • 个人网站设计企业搜索引擎营销策略有哪些
  • 公司搬家网站seo排名培训
  • 个人网站不能有盈利性质个人网站推广
  • 贵阳建设工程招投标网站seo搜索引擎优化知乎
  • wordpress 页面 权限电脑优化大师官方免费下载
  • 四平公司做网站最新疫情消息
  • 想做棋牌网站怎么做南昌百度快速排名提升
  • 网站备案填写要求吗中国舆情在线
  • 常州发布信息的有什么网站关键词免费下载
  • 苏州微信网站建设发稿网
  • 怎么自己做导航网站搜索网
  • php开发网站 用java做后台首码项目推广平台
  • 莱州人才网外贸网站建设优化推广
  • 深圳网站. 方维网络网络营销推广策划的步骤
  • 百度网站收录查询地址人工智能培训机构排名
  • 贵州专业网站建设企业微信会话内容存档
  • 个人手机版网站app怎么做seo网站关键词优化方法
  • 服务器出租网站百度权重工具
  • 网站名称要求无锡整站百度快照优化
  • 怎么提升网站流量企业营销策划包括哪些内容
  • 用vs做网站的教程线上推广怎么做
  • 自己做副业可以抢哪个网站网游百度搜索风云榜