Skip to Content
C++程序设计语言(第4部分:标准库)(原书第4版)
book

C++程序设计语言(第4部分:标准库)(原书第4版)

by 本贾尼 斯特劳斯特鲁普
August 2021
Intermediate to advanced
450 pages
6h 57m
Chinese
Pearson
Content preview from C++程序设计语言(第4部分:标准库)(原书第4版)

41.2 内存模型

C++实现大多以标准库组件的形式提供对并发机制的支持。这些组件依赖于一组称为内存模型(memory model)的语言保证。内存模型是计算机设计师和编译器实现者之间关于计算机硬件最佳表示方式的讨论结果。如ISO C++标准库所指出,内存模型描述了编译器实现者与程序员之间的约定,确保大多数程序员不必考虑现代计算机硬件的细节。

为了理解所涉及的问题,请记住一个简单事实:对内存中对象的操作永远不直接处理内存中的对象,而是将对象加载到处理器的寄存器中,在那里修改它,然后再写回内存。更糟的是,对象通常首先从主存加载到缓存中,然后再加载到寄存器。例如,考虑递增一个简单的整数x:

内存可被多个线程共享,而缓存也可(依赖于机器体系结构)被运行于相同或不同“处理单元”(通常被称为处理器(processor)、核心(core)或超线程(hyper-thread);这是一个系统特性和术语都快速演变的领域)的线程所共享。这导致简单操作(如“将x加1”)都有很大可能崩溃。这里的描述已是经我简化了的,计算机体系结构专家很容易发现这一点。有些人可能注意到我没有提及存储缓冲,我推荐参考[McKenney,2012]的附录C。

41.2.1 内存位置

考虑两个全局变量b和c:

现在,如大家所期望,x==1且y==1。为什么这也值得一提?考虑如果链接器将b和c分配到相同的内存字且机器存取的最小单位是字(大多数现代硬件都是如此),将会发生什么: ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

算法精讲视频课程:24篇系列讲座

算法精讲视频课程:24篇系列讲座

罗伯特·塞奇威克, 凯文·韦恩(Kevin Wayne)
可编程网络自动化

可编程网络自动化

Jason Edelman, Scott S. Lowe, Matt Oswalt
C语言核心技术(原书第2版)

C语言核心技术(原书第2版)

Peter Prinz, Tony Crawford
Go程序设计语言

Go程序设计语言

艾伦A. A.多诺万, 布莱恩W. 柯尼汉

Publisher Resources

ISBN: 9787111544395