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

培训的网站建设企业查询app

培训的网站建设,企业查询app,泰安做网站的公司,最早做网站的那批人基础概念 qt的下线程qthread#xff0c;每个线程都有自己的事件循环exec。对象的线程上下文#xff0c;每个对象都有自己的线程上下文#xff0c;怎么理解呢#xff0c;就是该对象在哪个线程创建#xff0c;其线程上下文就是谁。每个qobject对象在创建时都有包含线程成员…基础概念 qt的下线程qthread每个线程都有自己的事件循环exec。对象的线程上下文每个对象都有自己的线程上下文怎么理解呢就是该对象在哪个线程创建其线程上下文就是谁。每个qobject对象在创建时都有包含线程成员threaddata该成员的类型是QThreadData该成员与qobject对象的父对象保持一致若父对象不存在则取当前线程的值为该成员赋值详见源码如下 QObject::QObject(QObject *parent): d_ptr(new QObjectPrivate) {Q_D(QObject);d-threadData (parent !parent-thread()) ? parent-d_func()-threadData : QThreadData::current();if (parent) {if (!check_parent_thread(parent, parent ? parent-d_func()-threadData : 0, d-threadData))parent 0;setParent(parent); }如上代码可以得出如下结论 当创建QObject时在构造函数中会根据父对象的值进行赋值规则是如果父对象存在并且父对象下thread成员存在则赋值给新创建的threadData成员否则将当前多线程的线程数据赋值给该对象threadData成员。 void QObject::moveToThread(QThread *targetThread) {Q_D(QObject);if (d-parent ! 0) {qWarning(QObject::moveToThread: Cannot move objects with a parent);return;}if (d-isWidget) {qWarning(QObject::moveToThread: Widgets cannot be moved to a new thread);return;}QThreadData *currentData QThreadData::current();QThreadData *targetData targetThread ? QThreadData::get2(targetThread) : new QThreadData(0);if (d-threadData-thread 0 currentData targetData) {// one exception to the rule: we allow moving objects with no thread affinity to the current threadcurrentData d-threadData;} else if (d-threadData ! currentData) {qWarning(QObject::moveToThread: Current thread (%p) is not the objects thread (%p)./nCannot move to target thread (%p)/n,currentData-thread, d-threadData-thread, targetData-thread);return;} ......通过如上代码可以看到movetothread的限制条件如下 如果存在父对象调用movetothread接口会失败并提示“QObject::moveToThread: Cannot move objects with a parent”如果是该对象是QWidget或者其子类不能调用movetothread因为qwidget及其子类只能在主线程中。否则会产生“QObject::moveToThread: Widgets cannot be moved to a new thread”错误如果要调用的movetothread的对象的线程上下文是一个线程A要转移的线程B如果在线程C中调用movetothread那么会失败只能在线程A调用movetothread接口。否则会产生“QObject::moveToThread: Current thread (%p) is not the objects thread (%p)./n                  Cannot move to target thread (%p)”错误。 movetothread的本质 个人理解每个线程都有自己的事件循环并不是一个程序只有一个事件循环调用movetothread后即将该对象相关的事件推送的到对应新线程的事件循环新线程会将事件推送到对应对象的event方法进行分发处理。所以只有事件类型的才可以在新线程中执行即只能通过信号槽机制来调用因为跨线程信号槽机制会触发事件推送在另外一个线程中通过函数调用的方式调用该对象的方法不会在新线程中执行而是在调用线程执行。 重点 movetothread是一种多线程的实现方式 对于事件驱动机制来说例如“定时器”或者“网络”模块他们只能在单一进程中使用例如不能一个线程创建一个定时器而在另外一个线程开始或者结束该定时器。这些操作都不可取。
http://www.hkea.cn/news/14428102/

相关文章:

  • seo网站关键词优化排名网络营销推广岗位职责
  • 石家庄行业网站网站建设不完整(网站内容太少)
  • 自己做的网页怎么上传网站吗wordpress 系统安装
  • 深圳建设网站的公司哪家好做房地产网站广告销售
  • 做网站须知正规的建网站公司
  • 没有防盗链的网站wordpress通过广告挣钱
  • 继续接入备案 增加网站 区别网站建设相关的
  • 泰兴做网站电话个性化网站建设多少钱
  • 聊城手机网站制作大连 响应式网站
  • 中小型企业网站大全兰州吸引用户的网站设计
  • 品牌策略有哪些软件营销之群排名优化教程
  • 能打开各种网站的搜索引擎东营网站建设报价
  • 镇江建站推广报价浙江省建设注册管理中心网站
  • 福州网站建设找时时在网络品牌建设计划
  • 给孩子做的饭网站电脑版传奇
  • 西安网易网站建设wordpress开发西瓜
  • 北京建站模板展示移动应用开发是做什么的
  • 平面设计师参考网站建设企业网站登录入口
  • 网站 关键词 出现频率网站建设一对一培训班
  • 龙华做网站联系电话小程序源码加密
  • 网站做成小程序一般通过男网友
  • 怎么做网站有利于收录jsp网站设计教学做一体化教程
  • 昌邑微信网站建设公司在天极网做网站有效果吗
  • 出色的网站设计南京网站的优化
  • 完成网站集约化建设wordpress 注册功能
  • 大连哪家公司做网站比较好wordpress 购买会员
  • 商务网站建设期末考试19年做网站
  • 岳阳手机网站制作手机 网站服务器
  • 建网站的步骤采集微信公众号 做网站
  • 网站备案证书怎么下载不了淘宝网的网络营销方式