学习内容
并发和并行
同步和异步
临界区
阻塞和非阻塞
死锁、饥饿、活锁
Amdahl定律、Gustafson定律、Sun-Ni 定律
并发和并行
解释一:
并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。
解释二:
并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。
同步和异步
同步和异步通常用来形容一次方法调用。同步方法调用一开始,调用者必须等待被调用的方法结束后,调用者后面的代码才能执行。而异步调用,指的是,调用者不用管被调用方法是否完成,都会继续执行后面的代码,当被调用的方法完成后会通知调用者。
阻塞和非阻塞
阻塞和非阻塞通常用来形容多线程间的相互影响,比如一个线程占有了临界区资源,那么其他线程需要这个资源就必须进行等待该资源的释放,会导致等待的线程挂起,这种情况就是阻塞,而非阻塞就恰好相反,它强调没有一个线程可以阻塞其他线程,所有的线程都会尝试地往前运行。
临界区
临界区用来表示一种公共资源或者说是共享数据,可以被多个线程使用。但是每个线程使用时,一旦临界区资源被一个线程占有,那么其他线程必须等待。
Amdahl定律、Gustafson定律、Sun-Ni 定律
Amdahl 定律:
在计算机体系架构设计过程中,某个部件的优化对整个架构的优化和改善是有上限的。
Gustafson 定律:
假设随着处理器个数的增加,并行与串行的计算总量也是可以增加的。Gustafson定律认为加速系数几乎跟处理器个数成正比,如果现实情况符合Gustafson定律的假设前提的话,那么软件的性能将可以随着处理个数的增加而增加。
Sun-Ni 定律:
充分利用存储空间等计算资源,尽量增大问题规模以产生更好/更精确的解。