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

网站怎么优化seo南京做网站南京乐识专心

网站怎么优化seo,南京做网站南京乐识专心,网页制作素材末班,荥阳做网站推广1.线程池可以创建线程统一的管理线程#xff08;统一创建、释放线程#xff09; 2.使用线程池方法实现点击开始按钮生成10000个随机数#xff0c;然后分别使用冒泡排序和快速排序排序这10000个随机数#xff0c;最后在窗口显示排序后的数字#xff1a; mainwindow.h文件…1.线程池可以创建线程统一的管理线程统一创建、释放线程 2.使用线程池方法实现点击开始按钮生成10000个随机数然后分别使用冒泡排序和快速排序排序这10000个随机数最后在窗口显示排序后的数字 mainwindow.h文件 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include QMainWindowQT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACEclass MainWindow : public QMainWindow {Q_OBJECTpublic:MainWindow(QWidget *parent nullptr);~MainWindow(); signals:void starting(int num); private:Ui::MainWindow *ui; }; #endif // MAINWINDOW_Hmythread.h文件 #ifndef MYTHREAD_H #define MYTHREAD_H #include QObject #include QRunnable //生成随机数 class MyThread : public QObject,public QRunnable //要使用Qt的信号槽继承就必须要继承QObject类实现多继承注意QObject类要写在前面 {Q_OBJECT public:explicit MyThread(QObject *parent nullptr);void recvNum(int num);void run() override; signals:void sendArray(QVectorint list); private:int m_num; };class BubbleSort : public QObject,public QRunnable {Q_OBJECT public:explicit BubbleSort(QObject *parent nullptr);void recvArray(QVectorint list);void run() override; signals:void finish(QVectorint num); private:QVectorint m_list; };class QuickSort : public QObject,public QRunnable {Q_OBJECT public:explicit QuickSort(QObject *parent nullptr);void recvArray(QVectorint list); private:void quickSort(QVectorint list, int l, int r);void run() override; signals:void finish(QVectorint num); private:QVectorint m_list;}; #endif // MYTHREAD_Hmain.cpp  #include mainwindow.h#include QApplicationint main(int argc, char *argv[]) {QApplication a(argc, argv);qRegisterMetaTypeQVectorint(QVectorint);MainWindow w;w.show();return a.exec(); }mainwindow.cpp #include mainwindow.h #include ui_mainwindow.h #include mythread.h #include QThreadPool MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui-setupUi(this);//1.创建任务类对象MyThread *gen new MyThread;BubbleSort *bubble new BubbleSort;QuickSort *quick new QuickSort;connect(this, MainWindow::starting, gen, MyThread::recvNum);//2.启动子线程connect(ui-start, QPushButton::clicked, this, []{emit starting(10000); //在启动子线程时将要生成的随机数的个数发送出去QThreadPool::globalInstance()-start(gen); //将任务类对象(生成随机数)丢到线程池中});//接收子线程发送的数据connect(gen, MyThread::sendArray, bubble, BubbleSort::recvArray);connect(gen, MyThread::sendArray, quick, QuickSort::recvArray);connect(gen, MyThread::sendArray, this, [](QVectorint list){ //connect里面不支持传递QVector类型//需要使用qRegisterMetaType()进行注册QThreadPool::globalInstance()-start(bubble); //将任务类对象(冒泡排序)丢到线程池中QThreadPool::globalInstance()-start(quick); //将任务类对象(快速排序)丢到线程池中for(int i 0; i list.size(); i){ui-randList-addItem(QString::number(list.at(i)));}});connect(bubble, BubbleSort::finish, this, [](QVectorint list){ //connect里面不支持传递QVector类型//需要使用qRegisterMetaType()进行注册for(int i 0; i list.size(); i){ui-bubbleList-addItem(QString::number(list.at(i)));}});connect(quick, QuickSort::finish, this, [](QVectorint list){ //connect里面不支持传递QVector类型//需要使用qRegisterMetaType()进行注册for(int i 0; i list.size(); i){ui-quickList-addItem(QString::number(list.at(i)));}});\ }MainWindow::~MainWindow() {delete ui; } mythread.cpp文件 #include mythread.h #include QVector #include QElapsedTimer //计算某个流程执行所使用的时间 #include QDebug #include QThreadMyThread::MyThread(QObject *parent): QObject(parent), QRunnable() {setAutoDelete(true); //设置当前这个线程的对象放到线程池里后在工作完毕后自动释放 }void MyThread::recvNum(int num) {m_num num; }void MyThread::run() {qDebug() 生成随机数的线程地址 QThread::currentThread(); //获取一个指针这个指针指向当前线程对象的地址QVectorint list;QElapsedTimer time;time.start();for(int i 0; i m_num; i){list.push_back(qrand() % 100000);}int milsec time.elapsed();qDebug() 生成 m_num 个随机数总共用时 milsec 毫秒;emit sendArray(list); }BubbleSort::BubbleSort(QObject *parent): QObject(parent), QRunnable() {setAutoDelete(true); //设置当前这个线程的对象放到线程池里后在工作完毕后自动释放 }void BubbleSort::recvArray(QVectorint list) {m_list list; }void BubbleSort::run() {qDebug() 冒泡排序的线程地址 QThread::currentThread(); //获取一个指针这个指针指向当前线程对象的地址QElapsedTimer time;time.start();for(int i 0; i m_list.size() - 1 ;i){for(int j 0;j m_list.size() - i - 1; j){if(m_list[j] m_list[j 1]){int temp m_list[j];m_list[j] m_list[j 1];m_list[j 1] temp;}}}int milsec time.elapsed();qDebug() 冒泡排序用时 milsec 毫秒;emit finish(m_list); }QuickSort::QuickSort(QObject *parent): QObject(parent), QRunnable() {setAutoDelete(true); //设置当前这个线程的对象放到线程池里后在工作完毕后自动释放 }void QuickSort::recvArray(QVectorint list) {m_list list; }void QuickSort::quickSort(QVectorint s, int l, int r) {if(l r){int i l, j r;int x s[l];while(i j){while(i j s[j] x){j--;}if(i j){s[i] s[j];}while(i j s[i] x){i;}if(i j){s[j--] s[i];}}s[i] x;quickSort(s, l, i - 1);quickSort(s, i 1, r);} }void QuickSort::run() {qDebug() 快速排序的线程地址 QThread::currentThread(); //获取一个指针这个指针指向当前线程对象的地址QElapsedTimer time;time.start();quickSort(m_list, 0,m_list.size()-1);int milsec time.elapsed();qDebug() 快速排序用时 milsec 毫秒;emit finish(m_list); }运行结果 通过运行结果可以发现生成随机数的线程和冒泡排序的线程是使用线程池中的同一个线程生成随机数的线程结束后就空闲了然后又来了两个任务冒泡排序和快速排序所以就又使用了这个空闲的任务来运行冒泡排序然后快速排序用到了线程池里面的另一个线程。通过这点可以知道通过线程池可以最大程度利用线程减少资源的浪费。
http://www.hkea.cn/news/14519824/

相关文章:

  • 网站与平台的区别怎样做京东网站
  • 少儿图书销售网站开发背景泰安网页设计招聘
  • 如何做漂亮的网站首页足球推介网
  • 网站招聘方案怎么做海南做房地产网站的网络公司
  • 六安网站建设招商wordpress 常见问题
  • 上海自助建站 上海网站建设免费申请网站域名
  • 网站建设内容保障工作个人总结做网站要多少
  • 广东专业网站建设网站建设方案书设计图
  • 专业网站设计力荐亿企邦软件工程职业生涯规划书
  • 做哪个网站零售最好wordpress 阿里云景象
  • 怎么建一个公司运营网站网站建设与管理 试卷
  • 企业自建网站劣势安徽建设干部学校网站
  • 免费网站app源码上海综合新闻
  • 软件跟网站开发的区别深圳燃气公司招聘信息
  • 免费网站安全软件大全游戏免费ppt模板下载大全 完整版无需会员
  • 廊坊网站制作网站怎么搜索别人的wordpress模板
  • 长春网页网站制作易购商城app
  • 做百度个人网站厦门做网站个人
  • 东莞网站制作推广公司河南网站建设yijuce
  • 景区微网站 建设方案网站服务器买了后怎么做的
  • seo排名工具站长网站实名审核多久
  • 网站建设包含内容自己的wordpress
  • 做那个网站的图客比较好提高网站收录
  • 无锡做网站公司多少钱旅游网站建设项目报告论文
  • 网站建设学习视频网络营销赚钱
  • 万链网站做的怎么样?百度seo服务方案
  • 个体户可以注册网站建设服务wordpress主题DUX大前端
  • 如何防止网站攻击wordpress使用七牛防止降权
  • 自己做的网站出现广告盘锦市建设银行网站
  • wordpress 站内信插件seo和sem是什么意思