找回密码
 立即注册
搜索
热搜: 活动 通知
查看: 2246|回复: 4

第1章-课程说明、视频目录和相关资料

[复制链接]

403

主题

307

回帖

3173

积分

管理员

积分
3173
发表于 2024-2-26 14:07:44 | 显示全部楼层 |阅读模式
本套课程又名《多线程、访存排序和并发内存模型》。现已完结并可供下载。

通过学习内存模型的知识,了解多线程并发时基于共享变量的线程通信有什么问题,以及如何用硬件和软件的手段解决这些问题。

关键内容:进程、线程、并行、并发、数据竞争、互斥锁、原子操作、原子变量、流水线、乱序执行、缓存、指令的执行和引退、存写缓冲器(Write-buffer/Store-buffer)、顺序一致性、访存次序(Memory ordering)、偏序(partial order)、全序(total order)、单一全序(single total order)、x86-tso的访存次序、arm/power的访存次序、x86上的存全序(total store order)、指令重排、x86平台上的同步操作指令、SC-DRF的实例、求值、值计算、副作用、C/C++的原子操作库、通过原子操作施加的访存次序和同存同步、前发(happens before)、线程间前发、依赖前序、前序、松散的原子操作、memory_order-relaxed/acquire/release/consume。



内容大纲(课程目录):


├─C01.课程内容及相关说明

├─C02.进程和线程
│  ├─002.认识进程和线程
│  ├─003.C语言对线程的支持
│  ├─004.C语言编译器的选择
│  ├─005.用C标准库函数创建线程
│  └─006.并行和并发

├─C03.数据竞争
│  ├─007.多线程数据竞争的例子
│  └─008.数据竞争是如何产生的

├─C04.原子操作和锁
│  ├─009.原子操作和原子变量
│  ├─010.互斥锁
│  ├─011.执行原子操作的机器指令
│  ├─012.用机器指令实现原子操作的例子
│  └─013.用机器指令实现互斥锁的例子

├─C05.线程通信及相关问题
│  ├─014.一个线程间通信的例子
│  ├─015.编译优化和指令重排
│  └─016.原子操作的神奇效应

├─C06.流水线、乱序执行和缓存
│  ├─017.什么是编排顺序
│  ├─018.流水线
│  ├─019.乱序执行
│  ├─020.指令的执行和引退
│  ├─021.存写缓冲器
│  └─022.缓存

├─C07.硬件内存模型
│  ├─023.多处理器系统和顺序一致性
│  ├─024.顺序一致的执行
│  ├─025.特别练习7-1
│  ├─026.顺序一致性模型的访存次序
│  ├─027.偏序和全序
│  ├─028.顺序一致性存在单一全序
│  ├─029.x86处理器的指令重排
│  ├─030.x86处理器上的存全序TSO
│  ├─031.x86的内存屏障指令MFENCE
│  ├─032.x86-tso的访存次序(一)
│  ├─033.x86-tso的访存次序(二)
│  ├─034.x86-tso的访存次序(三)
│  ├─035.x86-tso的访存次序(四)
│  ├─036.x86-tso的访存次序(五)
│  ├─037.x86-tso的访存次序(六)
│  ├─038.x86访存次序的总结
│  ├─039.多处理器和缓存一致性
│  ├─040.MESI协议
│  ├─041.MESI协议的状态转化
│  ├─042.arm/power的访存次序(一)
│  ├─043.arm/power的访存次序(二)
│  ├─044.arm/power的访存次序(三)
│  ├─045.arm/power的访存次序(四)
│  ├─046.如何阻止指令重排
│  ├─047.避免数据竞争的顺序一致性
│  ├─048.x86平台上的同步操作指令
│  ├─049.SC-DRF的实例
│  └─050.特别练习7-2

├─C08.C/C++内存模型
│  ├─051.C/C++内存模型简介
│  ├─052.C语言的表达式
│  ├─053.表达式的例子
│  ├─054.表达式的功能
│  ├─055.求值、值计算和副作用
│  ├─056.前序、后序和序列点
│  ├─057.特别练习8-1
│  ├─058.无序和不确定顺序
│  ├─059.冲突和数据竞争
│  ├─060.原子操作库
│  ├─061.一个多线程数据竞争的例子
│  ├─062.用原子操作解决数据竞争的例子
│  ├─063.C/C++内存模型的核心思想
│  ├─064.原子操作的附加属性(同步和访存次序)
│  ├─065.通过原子操作施加指定的访存次序
│  ├─066.通过原子操作施加内存同步
│  ├─067.前发
│  ├─068.同步操作及其分类
│  ├─069.原子操作的线程间同步
│  ├─070.依赖前序
│  ├─071.线程间前发
│  ├─072.可见副作用
│  ├─073.再论前序和前发
│  ├─074.松散的原子操作
│  ├─075.原子变量的修改次序
│  ├─076.原子操作的一致性规则
│  ├─077.顺序一致性的原子操作
│  ├─078.实例解析一
│  ├─079.实例解析二
│  ├─080.原子变量和C语言的运算符
│  ├─080.实例解析三
│  ├─081.实例解析四
│  ├─082.实例解析五
│  ├─083.实例解析六
│  ├─084.对原子操作函数的附加说明
│  ├─085.C语言对原子类型的支持:存取的顺序一致性语义
│  ├─086.C语言对原子类型的支持:复合赋值的顺序一致性语义
│  ├─087.C语言对原子类型的支持:递增和递减的顺序一致性语义
│  └─088.C语言对原子类型的支持:不使用标准库函数的线程同步
└─源码




学习前应懂得计算机的工作原理,了解一些汇编语言的知识,有使用C语言编程的经验。

课程说明视频版:链接: https://pan.baidu.com/s/1b33sYZpsZYqU3oAe4B0qtA 提取码: 37gv

课程状态:已完结,请在本版内逐课段学习。相关资料包含在各课段内。有疑问的,在对应的课段内讨论。

无论是对高级会员还是至尊会员来说,本课程的主体内容都是成体系而且完整的。但是至尊会员多了习题(含解答)和相关资料。




403

主题

307

回帖

3173

积分

管理员

积分
3173
 楼主| 发表于 2024-2-27 09:32:58 | 显示全部楼层
以下是与本套视频课程配套的源码、工具和相关图表。请购买至尊会员后下载。



配套源码和工具(适用于32位和64位计算机环境):


扩展阅读资料:


更多的扩展阅读资料(
在这个PDF文件内,只给出了所有资料的名称和下载/阅读链接,不包括所有资料本身):






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

403

主题

307

回帖

3173

积分

管理员

积分
3173
 楼主| 发表于 2024-2-27 09:36:16 | 显示全部楼层
以下是本套课程的视频,请点击观看(至尊会员权益部分需下载):




第1章:开篇

1.1  课程内容及相关说明

第2章:进程和线程
2.1  认识进程和线程
2.2  C语言对线程的支持
2.3  C语言编译器的选择
2.4  用C标准库函数创建线程
2.5  并行和并发

6

主题

14

回帖

130

积分

注册会员

积分
130
发表于 2024-3-23 20:16:23 | 显示全部楼层
老师这套课程会更新完毕吗,什么权限的会员能观看

403

主题

307

回帖

3173

积分

管理员

积分
3173
 楼主| 发表于 2024-3-23 22:24:56 | 显示全部楼层
x86Orx64 发表于 2024-3-23 20:16
老师这套课程会更新完毕吗,什么权限的会员能观看

这个课程需要一段时间的制作。勿躁。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|鼠侠网 ( 吉ICP备19001332号 )

GMT+8, 2024-11-21 21:04 , Processed in 0.238838 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表