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

html网页制作小刘在线课程seo网站推广免费

html网页制作小刘在线课程,seo网站推广免费,软件定制外包公司,最近做网站开发有前途没可怜的volatile。被误解到如此地步。它甚至不应该出现在本章中,因为它与并发程序设计毫无关系。但是在其他程序设计语言中(Java和C#),它还是会对并发程序设计有些用处。甚至在C++中,一些编译器也已经把volatile投入到染缸,使得它的语义显得可以用于并发软件中(但是仅可用…

可怜的volatile。被误解到如此地步。它甚至不应该出现在本章中,因为它与并发程序设计毫无关系。但是在其他程序设计语言中(Java和C#),它还是会对并发程序设计有些用处。甚至在C++中,一些编译器也已经把volatile投入到染缸,使得它的语义显得可以用于并发软件中(但是仅可用于使用这些编译器进行编译之时)。

因此,除了消除环绕在它周围的混淆视听外,没有什么其他的理由值得在关于并发的一章中讨论volatile。

程序员有时会把volatile与绝对属于本章讨论范围的另一C++特性混淆,那就是std::atomic模板。该模板的实例(例如,std::atomic<int>,std::atomic<bool>和std::atomic<Widget*>等)提供的操作可以保证被其他线程视为原子的。一旦构造了一个std::atomic型别对象,针对它的操作就好像这些操作处于受互斥量保护的临界区域一样,但是实际上这些操作通常会使用特殊的机器指令来实现,这些指令比使用互斥量来的更加高效。

考虑以下应用了std::atomic的代码:

std::atomic<int> ai(0);   //将ai初始化为0
ai = 10;                  //将ai原子值设置为10
std::cout << ai;          //原子地读取ai的值
++ai;                     //原子地将ai自增为11
--ai;                     //原子地将ai自减为10    

在这些语句的执行期间,其他读取ai的线程可能只会看到它取值为0、10或11,而不可能有其他的取值(当然,前提假设这是修改ai值的唯一线程)。

此例在两方面值得注意。首先,在“std::cout << ai;”这个语句中,ai是std::atomic这一事实只能保证ai的读取是原子操作。至于整个语句都以原子方式执行,则没有提供如此保证。在读取ai的值和调用operator << 将其写入标准输出之间,另一个线程可能已经修改了ai的值。这对语句的行为没有影响,因为整型的operator << 会使用按值传递的int型别的形参来输出(因此输出的值会使从ai读取的值),重点在于了解这个语句中具备原子性的部分仅在于ai的读取而不涉及其余更多部分。

此例子第二个值得注意的方面是最后两个语句的行为——ai的自增和自减,这两个都是读取-修改-写入(read-modify-write,RMW)操作,但皆以原子方式执行。这是std::atomic型别最棒的特性之一:一旦构造出std::atomic型别对象,其上所有的成员函数(包括那些包含RMW操作的成员函数)都保证被其他线程视为原子的。

volatile int vi(0);    //将vi初始化为0
vi = 10;               //将vi设置为10
std::cout << vi;       //读取vi的值
++vi;                  //将vi自增为11
--vi;                  //将vi自减为10

在这段代码的执行期间,如果其他线程正在读取vi的值,它们可能会看到任何值,例如-12,68,4090727,任何值!这样的代码会出现未定义的行为,因为这些语句修改了vi,所以如果其他线程同时正在读取vi,就会出现在既非std::atomic,也非由互斥量保护的同时读写操作,这就是数据竞险的定义。

为了说明std::atomic型别对象和volatile的行为在多线程会有怎样的差异,这里举个具体例子,考虑两者由多个线程执行自增的简单计数器。二者都初始化为0:

http://www.dt0577.cn/news/16513.html

相关文章:

  • 设计师必去十大网站sem培训班培训多少钱
  • 简述网站制作方案和主要内容搜索引擎排名查询工具
  • 网站开发电商品牌推广与传播
  • 网站的想法今日国内新闻头条大事
  • 拖拽式网站建设哪家专业独立站seo建站系统
  • 搭建网站用什么软件云搜索网页版入口
  • 临沂住房和城乡建设局网站打不开怎样制作免费网页
  • 百度网站建设工具制作网站推广
  • 装饰设计公司属于什么行业海南seo排名优化公司
  • html怎么做查询网站网页seo搜索引擎优化
  • 自己做的网站怎么实现结算功能培训机构排名
  • wordpress自定义用户字段郑州seo顾问外包公司
  • 网站规划和建设进度2024年新冠疫情最新消息
  • 全国水利建设市场信用信息平台门户网站深圳网络推广公司有哪些
  • 用什么手机软件做网站网站服务器软件
  • 北京做网站建设的公司排名网络推广app是违法的吗
  • 北京微网站宁波做网站的公司
  • 安达市建设局网站nba西部最新排名
  • 服务器安装网站郑州网站制作公司哪家好
  • 南阳 直销网站开发软文广告经典案例300字
  • jsp网站开发具体步骤如何在各大网站发布信息
  • 老外做摄影网站花多少钱seo视频教程汇总
  • 网页视频怎么下载高清北京seo推广外包
  • 一家专做有机蔬菜的网站长沙疫情最新数据消息
  • 简单的网站建设步骤泾县网站seo优化排名
  • 昆明网站优化工具全网关键词云在哪里看
  • 中国能源建设集团有限公司总部seo流量排名软件
  • 如何确定网站建设 栏目广州网站优化方案
  • html5高端酒水饮料企业网站模版网络广告的优势有哪些
  • 宝塔做的网站网页打不开浅议网络营销论文