云课堂-硬件内存模型和C/C++内存模型资源介绍:
学习前应懂得计算机的工作原理,了解一些汇编语言的知识,有使用C语言编程的经验。通过学习内存模型的知识,了解多线程并发时基于共享变量的线程通信有什么问题,以及如何用硬件和软件的手段解决这些问题。
资源目录:
├─{1}--课程内容及相关说明 │ [1.1]--课程内容及相关说明_ev_ │ ├─{2}--进程和线程 │ [2.1]--认识进程和线程_ev_ │ [2.2]--C语言对线程的支持_ev_ │ [2.3]--C语言编译器的选择_ev_ │ [2.4]--用C标准库函数创建线程_ev_ │ [2.5]--并行和并发_ev_ │ ├─{3}--数据竞争 │ [3.1]--多线程数据竞争的例子_ev_ │ [3.2]--数据竞争是如何产生的_ev_ │ ├─{4}--原子操作和锁 │ [4.1]--原子操作和原子变量_ev_ │ [4.2]--互斥锁_ev_ │ [4.3]--执行原子操作的机器指令_ev_ │ [4.4]--用机器指令实现原子操作的例子_ev_ │ [4.5]--用机器指令实现互斥锁的例子_ev_ │ ├─{5}--线程通信及相关问题 │ [5.1]--一个线程间通信的例子_ev_ │ [5.2]--编译优化和指令重排_ev_ │ [5.3]--原子操作的神奇效应_ev_ │ ├─{6}--流水线、乱序执行和缓存 │ [6.1]--什么是编排顺序_ev_ │ [6.2]--流水线_ev_ │ [6.3]--乱序执行_ev_ │ [6.4]--指令的执行和引退_ev_ │ [6.5]--存写缓冲器_ev_ │ [6.6]--缓存_ev_ │ ├─{7}--硬件内存模型 │ [7.10]--x86-tso的访存次序(一)_ev_ │ [7.11]--x86-tso的访存次序(二)_ev_ │ [7.12]--x86-tso的访存次序(三)_ev_ │ [7.13]--x86-tso的访存次序(四)_ev_ │ [7.14]--x86-tso的访存次序(五)_ev_ │ [7.15]--x86-tso的访存次序(六)_ev_ │ [7.16]--x86访存次序的总结_ev_ │ [7.17]--多处理器和缓存一致性_ev_ │ [7.18]--MESI协议_ev_ │ [7.19]--MESI协议的状态转化_ev_ │ [7.1]--多处理器系统和顺序一致性_ev_ │ [7.20]--arm/power的访存次序(一)_ev_ │ [7.21]--arm/power的访存次序(二)_ev_ │ [7.22]--arm/power的访存次序(三)_ev_ │ [7.23]--arm/power的访存次序(四)_ev_ │ [7.24]--如何阻止指令重排_ev_ │ [7.25]--避免数据竞争的顺序一致性_ev_ │ [7.26]--x86平台上的同步操作指令_ev_ │ [7.27]--SC-DRF的实例_ev_ │ [7.28]--特别练习7-2_ev_ │ [7.2]--顺序一致的执行_ev_ │ [7.3]--特别练习7-1_ev_ │ [7.4]--顺序一致性模型的访存次序_ev_ │ [7.5]--偏序和全序_ev_ │ [7.6]--顺序一致性存在单一全序_ev_ │ [7.7]--x86处理器的指令重排_ev_ │ [7.8]--x86处理器上的存全序TSO_ev_ │ [7.9]--x86的内存屏障指令MFENCE_ev_ │ └─{8}--C/C++内存模型 [8.10]--原子操作库_ev_ [8.11]--一个多线程数据竞争的例子_ev_ [8.12]--用原子操作解决数据竞争的例子_ev_ [8.13]--C/C++内存模型的核心思想_ev_ [8.14]--原子操作的附加属性(同步和访存次序)_ev_ [8.15]--通过原子操作施加指定的访存次序_ev_ [8.16]--通过原子操作施加内存同步_ev_ [8.17]--前发_ev_ [8.18]--同步操作及其分类_ev_ [8.19]--原子操作的线程间同步_ev_ [8.1]--C/C++内存模型简介_ev_ [8.20]--依赖前序_ev_ [8.21]--线程间前发_ev_ [8.22]--可见副作用_ev_ [8.23]--再论前序和前发_ev_ [8.24]--松散的原子操作_ev_ [8.25]--原子变量的修改次序_ev_ [8.26]--原子操作的一致性规则_ev_ [8.27]--顺序一致性的原子操作_ev_ [8.28]--实例解析一_ev_ [8.29]--实例解析二_ev_ [8.2]--C语言的表达式_ev_ [8.30]--实例解析三_ev_ [8.31]--实例解析四_ev_ [8.32]--实例解析五_ev_ [8.33]--实例解析六_ev_ [8.34]--对原子操作函数的附加说明_ev_ [8.35]--C语言对原子类型的支持:存取的顺序一致性语义_ev_ [8.36]--C语言对原子类型的支持:复合赋值的顺序一致性语义_ev_ [8.37]--C语言对原子类型的支持:递增和递减的顺序一致性语义_ev_ [8.38]--C语言对原子类型的支持:不使用标准库函数的线程同步_ev_ [8.3]--表达式的例子_ev_ [8.4]--表达式的功能_ev_ [8.5]--求值、值计算和副作用_ev_ [8.6]--前序、后序和序列点_ev_ [8.7]--特别练习8-1_ev_ [8.8]--无序和不确定顺序_ev_ [8.9]--冲突和数据竞争_ev_