本文共 1019 字,大约阅读时间需要 3 分钟。
图像处理&服务端编程
同步:同步调用方法一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为。
异步:调用方法后立即返回,方法会在另一个线程中执行。调用者无需等待就可以继续后续工作。临界区指的是一个访问共用资源的程序片段(方法或代码块),而这些共用资源又无法同时被多个线程访问的特性,当有线程进入临界区段时,其他线程或是进程必须等待。
一个线程占用了临界区资源,其他线程就会等待,叫做阻塞。
死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
一个或多个线程一直无法获得所需要的资源,导致一直无法执行。
阻塞:只有一个线程能够得到临界区的锁。
无饥饿:线程的执行满足于先来后到。
无障碍:不加锁,检测到冲突后进行回滚。
无锁:必然有一个线程能在有限步骤内完成操作并离开临界区。(总能保证有一个线程成功)
无等待:所有线程必须能在有限步骤内完成操作。
阿姆达尔曾致力于并行处理系统的研究。对于固定负载情况下描述并行处理效果的加速比s,阿姆达尔经过深入研究给出了如下公式:
S=1/(1-a+a/n)
其中,a为并行计算部分所占比例,n为并行处理结点个数。这样,当1-a=0时,(即没有串行,只有并行)最大加速比s=n;当a=0时(即只有串行,没有并行),最小加速比s=1;当n→∞时,极限加速比s→ 1/(1-a),这也就是加速比的上限。例如,若串行代码占整个代码的25%,则并行处理的总体性能不可能超过4。
Gustafson假设随着处理器个数的增加,并行与串行的计算总量也是可以增加的。Gustafson定律认为加速系数几乎跟处理器个数成正比,如果现实情况符合Gustafson定律的假设前提的话,那么软件的性能将可以随着处理个数的增加而增加。
JMM内存模型主要围绕着原子性,可见性和有序性来建立。
指的是一个线程一旦开始操作,不会被其他线程干扰。
一个线程修改了共享变量的值,其他线程是否可以立即知道。