作业
必做:使⽤任意并发⼯具,完成这样⼀个程序,并发请求 https://baidu.com 和 https://bing.com,任意⼀个站点先获取到了完整的 html,即中⽌另⼀个流程,并把结果输出⾄⽂件:{sitename}.html,例如百度先获取到了结果,即输出baidu.html,若 bing 先获取到了结果,就输出 bing.html。
选做,难度+:安装 herdtools(https://github.com/herd/herdtools7),在本机上使⽤ litmus7 执⾏下列脚本:
1 | X86 OOO |
并阅读明⽩输出结果。
- 选做,难度+++:为什么使⽤
atomic.cas
可以实现⼀个互斥锁,为什么临界区内的内存读写操作不会被重排到 cas 操作之外?