并发编程的问题总结 -- 安全性、活跃性和性能
安全性
程序按照期望的执行
- 竞态条件:程序的执行结果依赖于程序的执行顺序
- 数据竞争:多个线程同时访问同一个数据
活跃性
某个操作无法继续执行下去 包括死锁、活锁和饥饿
- 活锁:线程没有阻塞但是任然不能继续执行下去,通过设置等待时间解决
- 饥饿:线程无法访问所需的资源而执行不下去
- 保证充足的资源
- 公平分配资源
- 避免持有锁的线程长时间执行
性能问题
\(S = \frac{1}{(1+p)+\frac{p}{n}}\)
n 可以理解为 CPU 的核数,p 可以理解为并行百分比,那(1-p)就是串行百分比
性能指标
- 吞吐量:单位时间内能处理的请求数
- 延迟:从请求发出到搜到响应的时间
- 并发量:能同时处理的请求数量
