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

怎么创建自己的网站怎么推销建设网站

怎么创建自己的网站,怎么推销建设网站,已经买了域名怎么做网站,网络技术服务目录 前言 首先#xff0c;讨论Qt里常见的三种上下文 同一线程的串行执行 同一线程的异步执行 多线程的执行 moveToThread办法 前言 笔者最近看了一个具备一定启发性质的Qt教程#xff0c;在这里#xff0c;笔者打算整理一下自己的笔记。分享在这里. 首先#xff0c…目录 前言 首先讨论Qt里常见的三种上下文 同一线程的串行执行 同一线程的异步执行 多线程的执行 moveToThread办法 前言 笔者最近看了一个具备一定启发性质的Qt教程在这里笔者打算整理一下自己的笔记。分享在这里. 首先讨论Qt里常见的三种上下文 Qt在逻辑层上笔者认为可分成三种上下文同线程的同步同线程的异步和多线程。 一个典型的同线程之间的同步说的是我们的处理在执行流上是串行的。 main --- A ----- B ------ C 比如说A函数B函数和C函数在上下文中串行的执行。这样的上下文非常的可靠每一个指令流都串行的访问数据不会出现数据竞争的问题但是代价就是——非常的慢。笔者三年的编程经验告诉自己——这样的编程上下文适用于流程在时序上非常严密的场景。 一个典型的同线程异步事情就看起来很有趣了。实际上看起来像这样。 这样的技术任何一个学习过OS的都知道实际上是在应用层上对这个线程实现了分片换而言之我们在这个线程上实现了逻辑并行物理串行的效果——看起来我们的代码在并发的执行但是实际上是一个线程快无影的完成一大堆工作。所以这样的编程范式属于高响应要求的场景或者说我们对性能谈不上太高的要求只需要他们看起来在同时执行。 这个场景就是真并发的场景了不管怎么说我们真的有多个线程执行多个代码流我们的代码上下文被托付给了操作系统层级的线程完成我们的工作。我们老生长谈的数据竞争并发安全就是在讨论这里的事情。 同一线程的串行执行 #include QCoreApplication #include QThread ​ void workA() {qInfo() I am handling Work A Thread: QThread::currentThread();QThread::currentThread()-sleep(1);qInfo() Work A Finished; } ​ void workB() {qInfo() I am handling Work B Thread: QThread::currentThread();QThread::currentThread()-sleep(1);qInfo() Work B Finished; } ​ void workC() {qInfo() I am handling Work C Thread: QThread::currentThread();QThread::currentThread()-sleep(1);qInfo() Work C Finished; } ​ int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);QThread::currentThread()-setObjectName(Thread Main);workA();workB();workC();return a.exec(); } 这个就是一个例子我们的任务ABC按照串行依次执行代码。看我们的输出就是这个主线程在依次的做任务ABC。 I am handling Work A Thread: QThread(0x1f0730e2860, name Thread Main) Work A Finished I am handling Work B Thread: QThread(0x1f0730e2860, name Thread Main) Work B Finished I am handling Work C Thread: QThread(0x1f0730e2860, name Thread Main) Work C Finished 同一线程的异步执行 事实上对于一些使用了QT类的场景同一线程的异步执行仍然非常常见。一个经典的例子就是我们使用QTimer的singleshot办法触发一个函数的执行。你可以看到我们实际上根本没有直接的调用但是async_workA由于timer事件的通知作为槽执行了 #include QCoreApplication #include QThread #include QTimer ​ void async_workA() {qInfo() Letss see the current thread: QThread::currentThread()-objectName();QThread::currentThread()-sleep(1);qInfo() And A work done:); } ​ int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);QThread::currentThread()-setObjectName(Main Thread);QTimer m;m.singleShot(1000, async_workA); ​qInfo() Main Thread: QThread::currentThread()-objectName();qInfo() has reached its end!;return a.exec(); } 多线程的执行 现在我们开始上难度那就是多线程的执行。 TestObject.cpp #include TestObject.h ​ #include QDebug #include QThread #include QTimer TestObject::TestObject(QObject *parent) : QObject{parent} {} ​ void TestObject::runMe() {qInfo() QThread::currentThread()-objectName() Running;QTimer::singleShot(1000, this, TestObject::internel_shot);qInfo() QThread::currentThread()-objectName() Finish; } ​ void TestObject::internel_shot() { qInfo() Shot; } Main.cpp #include QCoreApplication #include QThread ​ #include TestObject.h int main(int argc, char *argv[]) {QCoreApplication a(argc, argv); ​QThread::currentThread()-setObjectName(Main Thread); ​qInfo() Ready to shot a thread; ​QThread thread;thread.setObjectName(Thread Worker); ​TestObject test; ​test.moveToThread(thread); ​QObject::connect(thread, QThread::started, test, TestObject::runMe); ​thread.start(); ​qInfo() Finish QThread::currentThread()-objectName(); ​return a.exec(); } 这里有一个新的方法简单说一下 moveToThread办法 moveToThread 是 Qt 中用于将对象移到指定线程的函数。必须说明的是——我们的QT信号与槽机制是不跨线程的也就是说我们没办法使用信号与槽机制链接在A线程的a对象的信号与在B线程的b对象的槽。对于非 GUI 类的对象可以通过调用 moveToThread 将它们从主线程或其他线程转移到目标线程。这样目标线程就会负责该对象的事件处理和信号槽连接。 这样我们就会将我们的TestObject放置到我们的新线程中换而言之任何一个将会在B线程工作但是创建于A线程的物体请使用这个方法。
http://www.hkea.cn/news/14270705/

相关文章:

  • 南阳网站托管北京网站设计推荐柚米
  • 记事本做网站如何排版网易企业邮箱域名
  • 如何做美发店网站中国企业信用信息网官网
  • 房城乡建设部门户网站网站建设公司商务网站项目书
  • 义乌网站建设哪家好怎么看网站发的外链
  • 网站宝的作用网站开设作风建设专栏
  • 网站策划应该怎么做关闭WordPress自动文章摘要
  • 做移动端网站软件韩国购物网站
  • 用邮箱做网站如何把自己的网站推广
  • 微信公众平台对接网站seo 优化 服务
  • 网站建设方案策划书ppt用rp怎么做网站原型
  • 民非企业网站建设费怎么记账网络科技网站有哪些方面
  • 如何做试玩类网站网站配色教程
  • 有哪些做婚礼平面设计的网站网站有中文源码加英文怎么做
  • 成都建设网站的公司无锡地区网站制作公司排名
  • 拿自己爱人做网站厦门建设局耿家强
  • 包头哪有做网站的建设局主要负责什么
  • 市政建设招标网站有哪些wordpress 的环境搭建
  • 洮南网站建设哪家好通联支付网络服务股份有限公司
  • 互联网营销常用网站怎么用图片做网站背景图
  • 怎么建设网站运城2024年阳性最新症状
  • 网站流量如何做找网页模板的网站
  • 企业网站是企业在互联网上进行网络营销企业收录网站
  • 望牛墩做网站linkcat wordpress
  • asp.net+制作网站开发重庆教育建设集团有限公司官方网站
  • 网站建设需要学多久知乎有创意的设计产品
  • php做的网站网站运营案例
  • 电商网站开发平台用什么人开发pc端软件下载
  • 杨浦区建设小学网站首页建设银行代发工资网站
  • 外贸网站建设模板windows 2003 取消网站访问密码