安全性、活跃性和性能

2020/12/29 posted in  并发基础

并发编程的问题总结 -- 安全性、活跃性和性能

安全性

程序按照期望的执行


  1. 竞态条件:程序的执行结果依赖于程序的执行顺序
  2. 数据竞争:多个线程同时访问同一个数据


活跃性

某个操作无法继续执行下去
包括死锁、活锁和饥饿

  1. 活锁:线程没有阻塞但是任然不能继续执行下去,通过设置等待时间解决
  2. 饥饿:线程无法访问所需的资源而执行不下去
    1. 保证充足的资源
    2. 公平分配资源
    3. 避免持有锁的线程长时间执行


性能问题

\(S = \frac{1}{(1+p)+\frac{p}{n}}\)

n 可以理解为 CPU 的核数,p 可以理解为并行百分比,那(1-p)就是串行百分比

性能指标

  1. 吞吐量:单位时间内能处理的请求数
  2. 延迟:从请求发出到搜到响应的时间
  3. 并发量:能同时处理的请求数量