并发编程
PPG007 ... 2021-12-26 About 1 min
# 并发编程
# 关于并发
- 并发会在性能和编写额外代码上增加一些开销。
- 正确的并发是复杂的,即便对于简单地问题也是如此。
- 并发缺陷并非总能重现,所以常被看作偶发事件而忽略。
- 并发常常需要对设计策略进行根本性修改。
# 并发防御原则
- 单一职权原则:分离并发相关代码与其他代码。
- 并发相关代码有自己的开发、修改和调优生命周期。
- 并发相关代码有自己要对付的挑战,和非并发相关代码不同,往往更加困难。
- 写的不好的并发代码可能的出错方式数量也足具挑战。
- 限制数据作用域:严格限制共享数据的访问。
- 使用数据复本:?
- 线程尽可能独立:减少与其他线程共享数据的可能。
# 测试线程代码
编写有潜力暴露问题的测试,在不同的编程配置、系统配置和负载条件下频繁运行,如果测试失败,跟踪错误。
- 将伪失败看作可能的线程问题。
- 先使非线程代码可工作。
- 编写可插拔的线程代码(可在数个配置环境下运行的线程代码)。
- 编写可调整的线程代码(允许线程数量可调整和变动)。
- 运行多于处理器数量的线程(为了促使任务切换的发生)。
- 在不同平台上运行。
- 调整代码并强迫错误发生。
- 不要同时追踪非线程错误和线程错误。