13 - Multiprocessor Programming: From Getting Started to Giving Up
13 - 多处理器编程:从入门到放弃
1. 入门:共享内存线程模型与线程库
1.1. 并发编程:动机
void http_server(int fd) {
while (1) {
nread = read(fd, buf, 1024);
handle_request(buf, nread); // read 和 handle 有一块共享的 buf
}
}1.2. 解决方法:加一个操作系统 API
1.3. 并发 v.s. 并行
1.4. 多处理器编程:入门
1.5. 多处理器编程入门
1.6. More Problem
2. 放弃(1):状态迁移的确定性
2.1. 确定性的丧失
2.2. 确定性丧失的例子
2.3. 你发现你连 1+1 都不会了!
2.4. 失去确定性的后果
2.5. 答案
2.6. 后果
3. 放弃(2):代码按顺序执行
3.1. 编译器
3.2. 一个聪明的例子
3.3. 求和
3.4. 编译器干了什么
3.5. 控制优化行为
4. 放弃(3):全局的指令执行顺序
4.1. 并发程序的状态机模型

4.2. 过度简化的幻觉 - Spicy
4.3. 真实的状态机 - Spicy

4.4. 无序的真实世界 - Spicy
4.5. “无序”带来的后果 - Spicy
4.6. 观测“无序”带来的后果 - Spicy

4.7. 共享内存 & 地址空间 - Spicy
5. 总结
Last updated