引言:
本文主要是对10,11,12篇文章进行总结。
总结:
《避免活跃性危险》的主要内容是介绍如何可能出现的活性性危险有什么。比如死锁,活锁,饥饿。遇到不同的活跃性危险又该如何避免。例如,死锁可能出现的情况有顺序死锁,动态顺序死锁,多对象调用,资源死锁等情况,根据不同的情况,我们可以采用固定加锁顺序,开放调用,合理利用资源等手段避免死锁的发生。
《性能》的主要内容则是介绍如何分析并发程序的性能和如何提高并发程序的性能。在如何分析上,我们可以从可执行性和可伸缩性上入手。可执行性指在当前已有资源下并发程序的执行效率和状态。可伸缩性则是指当可以用资源增加时,并发程序的执行效率是否增加的特性。如果要提高并发程序的可执行性和可伸缩性,我们就需要从缩小锁的范围,锁分解,锁分段,避免使用热点域,替代独占锁等等方面入手。
《并发性能的测试》的主要内容是介绍如何对一个并发程序进行测试。包括如何进行正确性测试,性能测试,并在最后介绍了一些其他的测试方法。测试并发程序正确性的时候,我们需要先保证串行执行的真确性,然后从阻塞性测试,安全性测试,资源管理测试,交替性测试等方面分别测试。如果要测试并发程序的性能,我们就因该向并发程序中添加计时测试,并在多种环境下测试性能。注意,在测试性能的时候可能会遇见一些隐藏的陷阱,比如垃圾回收,动态编译,代码路径的不真实采样,不真实的竞争程度和无用代码的消除都有可能导致错误的性能结论。最后,在正确性测试和性能测试之外,我们可以通过代码审查,商业工具等其他手段提前检测出并发程序的问题。