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

做网站建设电话销售店铺seo是什么意思

做网站建设电话销售,店铺seo是什么意思,网站内容发布平台源码,在印度做外贸需要什么网站基础概念 qt的下线程qthread,每个线程都有自己的事件循环exec。对象的线程上下文,每个对象都有自己的线程上下文,怎么理解呢,就是该对象在哪个线程创建,其线程上下文就是谁。每个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 object's thread (%p)./n""Cannot move to target thread (%p)/n",currentData->thread, d->threadData->thread, targetData->thread);return;}
......

 通过如上代码可以看到movetothread的限制条件如下:

  1. 如果存在父对象,调用movetothread接口会失败,并提示“QObject::moveToThread: Cannot move objects with a parent
  2. 如果是该对象是QWidget或者其子类,不能调用movetothread,因为qwidget及其子类只能在主线程中。否则会产生“QObject::moveToThread: Widgets cannot be moved to a new thread”错误
  3. 如果要调用的movetothread的对象的线程上下文是一个线程A,要转移的线程B,如果在线程C中调用movetothread,那么会失败,只能在线程A调用movetothread接口。否则会产生“QObject::moveToThread: Current thread (%p) is not the object's thread (%p)./n"
                     "Cannot move to target thread (%p)
    ”错误。

movetothread的本质

个人理解:每个线程都有自己的事件循环,并不是一个程序只有一个事件循环,调用movetothread后,即将该对象相关的事件推送的到对应新线程的事件循环,新线程会将事件推送到对应对象的event方法进行分发处理。所以只有事件类型的才可以在新线程中执行(即只能通过信号槽机制来调用,因为跨线程信号槽机制会触发事件推送;在另外一个线程中通过函数调用的方式调用该对象的方法不会在新线程中执行,而是在调用线程执行)。

重点

movetothread是一种多线程的实现方式

对于事件驱动机制来说,例如“定时器”或者“网络”模块,他们只能在单一进程中使用,例如不能一个线程创建一个定时器,而在另外一个线程开始或者结束该定时器。这些操作都不可取。

http://www.mmbaike.com/news/28285.html

相关文章:

  • 光谷做网站推广怎么样百度快照提交入口
  • 网站免费正能量软件百度百科入口
  • 个人可以做导购网站吗百度投诉中心
  • 如何访问服务器上的网站南京seo优化公司
  • 企业快速建站免费模板商品推广
  • 网站目标关键词百度一下你就知道了百度一下
  • 免费个人网站建设制作代码慧聪网seo页面优化
  • 上海公司买车上牌规定前端seo是什么
  • 做美团网站代码公司网站域名怎么注册
  • 网站目录做跳转宁波厂家关键词优化
  • c 动态网站建设今天军事新闻最新消息
  • 中国乌镇互联网国际峰会百度关键词优化系统
  • 天安节能科技园公司做网站室内设计培训
  • 大学生可做的网站主题10常用的网络营销方法
  • 试用网站建设韶关今日头条新闻
  • 网站如何做外部链接企业推广的网站
  • 重庆住建网官网南昌seo技术外包
  • 做动态网站的素材怎么收集山西seo优化
  • 美橙网站建设经典案例上海网站制作开发
  • 河北网站优化推广运营平台
  • 腾讯云轻量云服务器郑州seo课程
  • css 制作网站手机百度账号登录入口
  • 微信公众号商城网站开发爱情链接
  • 中卫装修设计浙江seo推广
  • 网站项目需求分析群站优化之链轮模式
  • 无锡网站建设报价明细表班级优化大师官方免费下载
  • 免费域名 主机seo的理解
  • 长沙 网站优化搜索引擎优化案例
  • 初中做网站的软件网站推广手段
  • 长沙做网站要微联讯点很好微信管理软件哪个最好