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

经营地址怎么在国税网站做更改wordpress demo 导入

经营地址怎么在国税网站做更改,wordpress demo 导入,哈尔滨开发公司,社交平台网站建设预算目录 一. 线程学习 二. 学习线程当中#xff0c;得到的未知。 1. 了解以下MainWindow和main的关系 2. []()匿名函数 有函数体#xff0c;没有函数名. 3. join和detach都是用来管理线程的生命周期的#xff0c;它们的区别在于线程结束和资源的回收。 4. operator()() 仿…目录 一. 线程学习 二. 学习线程当中得到的未知。 1. 了解以下MainWindow和main的关系 2. []()匿名函数 有函数体没有函数名. 3. join和detach都是用来管理线程的生命周期的它们的区别在于线程结束和资源的回收。 4. operator()() 仿函数 5. try-catch的使用以及细节。处理异常try块用于包含可能出错的代码。catch块用于处理try块中发生的异常。 6. C创建多线程 1).普通函数的多线程创建方式 2).lsmbda表达式方式创建多线程 3).仿函数方式创建多线程 4).类成员函数创建多线程 一. 线程学习 首先我们任意建一个QT工程按下按键让数字递增。 void Widget::on_pushButton_clicked() {int i 0;for(;;){ui-lcdNumber-display(QString::number(i));sleep(1);} }但是我们在槽里这样写的话移动窗口或者按下按键会报错因为我们既要绘制窗口又要响应窗口移动的操作还要执行自加的逻辑当执行到这个自加的逻辑就已经很忙了它就没有功夫去调用显示逻辑了。我们可以加一个Debug查看一下。 void Widget::on_pushButton_clicked() {int i 0;for(;;){qDebug() i;ui-lcdNumber-display(QString::number(i));sleep(1);} }可以发现操作台是有数在走的但是却没有显示。 这时候我们就得采用多线程。那么我们使用join还是detach呢因为主线程也要执行不可能等待子线程执行而且主线程本身就是一个循环比如return a.exec()主进程不会退出所以使用detach。 void Widget::on_pushButton_clicked() {std::thread my_thread(Widget::showInfo,this);my_thread.detach(); }void Widget::showInfo() {int i 0;for(;;){qDebug() i;ui-lcdNumber-display(QString::number(i));sleep(1);} } 因为是在栈中定义的my_thread所以不需要担心资源回收的问题函数一结束my_thread就销毁了不用担心线程回收的问题。 这样我们点击按钮开始计数之后就不会卡死。 当然QT中封装了一个多线程的类叫QThread。刚刚我们写的线程是没有退出的逻辑的所以接下来我们使用QThread。 定义一个自定义的类继承QThread并重写run()方法在里面写线程执行的逻辑定义一个信号。 #include my_thrad.h #include QDebug My_Thrad::My_Thrad(QObject *parent) : QThread(parent) {}void My_Thrad::run() {int i 0;for(;;){qDebug() i;emit threadSignal(i);this-sleep(1);if (i 10){break;}} }#ifndef MY_THRAD_H #define MY_THRAD_H#include QThread #include QDebug class My_Thrad : public QThread {Q_OBJECT public:explicit My_Thrad(QObject *parent nullptr);~My_Thrad()//析构函数{qDebug() 线程退出了并回收了线程空间;} protected:void run() override; signals:void threadSignal(int val); };#endif // MY_THRAD_H这里我们添加了一个析构函数是判断新建线程能不能结束而要保证关闭窗口的时候线程仍然能够执行实现一个安全可靠的退出我们就要 #include widget.h #include ui_widget.hWidget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui-setupUi(this);my_thread new My_Thrad(this);//this父对象就是main.cpp中的wconnect(my_thread,My_Thrad::threadSignal,[](int val){ui-lcdNumber-display(QString::number(val));}); }Widget::~Widget() {delete ui;my_thread-exit();my_thread-wait();//等待线程执行完毕然后才退出delete my_thread; // // my_thread-deleteLater();//它是依赖于某个对象还依赖于主事件循环存在的情况下才是有效的所以这样会内存泄露 }void Widget::on_pushButton_clicked() {my_thread-start();//使用start间接调用的run方法 }因此我们在~Widget()析构函数中写上述代码实现等待线程执行完毕才退出并删除my_thread,输出”线程退出了并回收了线程空间。 二. 学习线程当中得到的未知。 1. 了解以下MainWindow和main的关系 main()函数非窗体程序入口函数 Mainwindow函数是窗体程序的入口函数 2. []()匿名函数 有函数体没有函数名. 3. join和detach都是用来管理线程的生命周期的它们的区别在于线程结束和资源的回收。 join函数会阻塞当前线程直到被调用join()的线程(子线程)执行完毕并退出在这个过程中调用join()的线程会一直等待直到被等待的线程退出。如果没有调用join函数。被等待的线程退出后它的资源不会被回收这可能会导致内存泄漏。 有时候我们不知道是否已经join()系统提供了一个joinable()来判断是否已经join() 使用detach会让线程在后台运行这就意味着与主线程不能直接交互了分离后的线程不能join 但使用detach时要注意主进程运行的时间不然可能线程还没执行完主进程就结束了 4. operator()() 仿函数 5. try-catch的使用以及细节。处理异常try块用于包含可能出错的代码。catch块用于处理try块中发生的异常。 try{ //可疑代码 //将异常生成对象的异常对象传递给catch块 }catch(异常){ //对异常进行处理 }finally{ } //可以没有finally 6. C创建多线程 1).普通函数的多线程创建方式 #include thread #include iostream #include unistd.h #include string using namespace std; void showInfo() {int i 0;for(;;){cout i endl;sleep(10000);} }void print(const string s) {couthello thread!endl;coutsendl; }int main() {/*thread my_thread(showInfo);my_thread.join();my_thread.detach();*/coutmain thread begin! endl;string s hello world;thread t(print,s);//thread t(print);t.join();coutmain thread end!endl;return 0; }2).lsmbda表达式方式创建多线程 #include iostream #include thread #include string using namespace std;int main() {coutmain beginendl;thread t([](string s)- void{couthello world!endl;coutsendl;},abc);t.join();coutmain endendl;return 0; }3).仿函数方式创建多线程 #include iostream #include thread #include string using namespace std; class MyThread{ public:void operator()(){coutHello World!endl;} };int main() {coutmain beginendl;MyThread mt;thread t(mt);t.join();coutmain endendl;return 0; } 4).类成员函数创建多线程 #include iostream #include thread #include string using namespace std; class MyThread{ public:void print(const string s){coutHello World!endl;coutsendl;} };int main() {coutmain beginendl;MyThread mt;thread t(MyThread::print,mt,ac) ;t.join();coutmain endendl;return 0; }
http://www.zqtcl.cn/news/762637/

相关文章:

  • 成都哪家公司做网站最好杭州软件开发
  • 做网站多少宽带够wordpress编辑文章中图片
  • 无锡网站制作排名软件工程公司
  • 做网站国内好的服务器美食网站建设项目规划书
  • 三亚市住房和城乡建设厅网站江西电信网站备案
  • 联谊会总结网站建设对外宣传如何在家做电商
  • 360建站系统徐州建设银行网上银行个人网站
  • 网站域名在哪里备案石家庄站规模
  • 重庆南川网站制作公司电话工会网站群建设
  • 深圳高端建设网站忘了网站链接怎么做
  • 郑州做网站报价wordpress中文4.8
  • 网站维护费用一年多少跨境电商平台网站建设广州
  • 辽宁网站制作公司网店装修流程
  • html5可以做交互网站吗打开网站说建设中是什么问题?
  • 彩票网站开发制作需要什么wordpress 在线预览
  • 外贸平台app衡水seo排名
  • 怎样做网站表白墙东莞商城网站推广建设
  • 郑州郑州网站建设河南做网站公司哪家好爱站长尾词挖掘工具
  • dede网站地图文章变量网站qq 微信分享怎么做
  • 越南做网站网站建设以及运营方面
  • 广西建网站哪家好网站关闭与域名备案
  • 网站开发版本号婚庆网站建设策划案费用预算
  • 厦门建设网站制作中山市哪家公司做网站
  • 网站路径wordpress制作电商网站
  • 江西网站开发哪家专业装饰设计公司网站
  • 企业网站策划实训Wordpress 主题简化
  • 做网站点击挣钱不兰州工程建设信息网站
  • 网站说服力 营销...免费看片网站
  • 深圳招聘网站大全制作网站软件下载
  • 网站建设说明哈尔滨网站建设渠道