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

商会网站建设seo外链增加

商会网站建设,seo外链增加,wordpress卸载多说,重新安装WordPress 如何备份文章目录 一、主线程阻塞等待子线程返回1、代码示例2、代码改进 一、主线程阻塞等待子线程返回 主线程等待一个线程,此线程会开始连接一个服务器并循环读取服务器存储的值,主线程会阻塞直到连接服务器成功。因为如果不阻塞,可能上层业务刚开…

文章目录

        • 一、主线程阻塞等待子线程返回
          • 1、代码示例
          • 2、代码改进

一、主线程阻塞等待子线程返回

主线程等待一个线程,此线程会开始连接一个服务器并循环读取服务器存储的值,主线程会阻塞直到连接服务器成功。因为如果不阻塞,可能上层业务刚开始读不到数据。

1、代码示例
bool bConnect = false;  // 退出条件void connectAndReadFromServer()
{// 模拟等待2秒连接服务器成功Sleep(2000);bConnect = true;// 模拟一个无限循环读取服务器数据while (true){qDebug() << "I am working";Sleep(1000);}
}int main(int argc, char *argv[])
{std::thread t(connectAndReadFromServer);// 阻塞等待子线程返回,该方式在debug下运行ok,release下不会阻塞。while (!bConnect){}qDebug() << "main thread continue, start read " << bConnect;return 0;
}

坑点:上述代码在debug下运行是没有问题的,因为编译器会关闭大部分优化,目的是保留代码的原始行为,方便调试。 但是在release模式下,编译器发现该循环内部无任何操作,会采取循环消除优化,直接跳过,主线程继续执行,所以此时bConnect为false。

2、代码改进
int num = 0;
while (!bConnect)
{Sleep(0);   // ok 正常阻塞//空函数(); // no 直接优化去掉//num++;  // no bConnect条件拿不到
}
  • Sleep(0) :主动放弃CPU时间片,重新线程调度,还可以刷新主线程的寄存器和缓存,让线程重新从内存中读取变量的最新值。
  • 空函数() :在release下,该循环不执行,直接被编译器优化掉。
  • 变量++:就算连接成功,编译器也会在release下优化,bConnect条件变量的值被缓存到寄存器中(因为要大量循环读),导致主线程无法感知到变量的变化。循环一直执行。所以可以给变量num加volatile关键字,这样也是可以正常阻塞的,通知编译器不要优化该变量,每次都从内存中读取最新的值。
http://www.dinnco.com/news/78111.html

相关文章:

  • 西安建站平台哪个好优化大师免安装版
  • 网站建设流程共有几个阶段天津优化公司哪家好
  • 网站站长是什么网络seo外包
  • 谁可以做网站厦门谷歌seo公司有哪些
  • 做外贸网站怎么设计seo推广专员工作内容
  • 简约大气的网站简述网络营销的特点
  • 自己做影视网站蚌埠网络推广
  • wordpress 评论回复邮件通知最好的网站优化公司
  • 访问网站速度很慢百度网盘下载慢
  • 松江新城投资建设发展有限公司网站今日新闻7月1日
  • 广州荔湾网站建设外贸网站优化公司
  • 丰宁县网站建设一键生成app制作器
  • 南昌网站建设有哪几家最近三天发生的重要新闻
  • 怎么做监控网站中国 日本 韩国
  • 杭州做网站哪个公司好全国疫情高中低风险区一览表
  • 做爰网站1000部百度的搜索引擎优化
  • 好用的网站平台app如何推广
  • h5手机网站发展趋势企业seo推广
  • 网站建设经验与教训电话百度
  • 蔡甸网站建设域名是什么意思呢
  • 受欢迎的大连网站建设搜索引擎优化的流程是什么
  • 安阳市城乡建设规划局网站seo优化与品牌官网定制
  • 做网站技术服务合同选择一个产品做营销方案
  • wordpress企业站主题免费长春网站关键词推广
  • 西安官网seo收费湖南seo网站策划
  • net网站开发框架免费网站 推广网站
  • 笔记本电脑做网站比较畅快刷关键词排名seo软件
  • 怎么做微信小说网站站内搜索工具
  • 网站重新设计电子网址怎么创建
  • 加盟品牌网站建设个人博客网站设计毕业论文