相关概念和术语
并发
并发指在某一时间段内,从宏观上看多个程序在同时运行,但在微观上多个程序是串行执行的。可以分为进程级的并发(操作系统下)和线程级的并发(在程序内部)。
并行
并行指两个或多个程序同时运行,无论从宏观上看,还是从微观上看,任务都是同时运行的。
并行和并发的关系
只有当计算机有多个CPU或者一个CPU有多个处理核时才可以实现真正意义上的并行运行。
串行执行和顺序执行
串行执行是相对于并发/并行执行而言的。顺序执行是计算机程序设计语言中常用的三种基本结构之一。
线程安全与线程不安全
JAVA工具集中提供的线程安全的类封装了必要的同步控制机制。
这些必要的措施可以包括:
(1)将线程间共享变量变为线程私有的变量,在线程间不允许共享;
(2)将状态变量修改为不可变的变量;
(3)使用同步控制机制。
数据竞争
数据竞争问题是当有两个或多个同时执行的线程访问同一个内存位置并且至少有一个线程尝试写入数据是而引起的问题。
避免数据竞争的方法有:
(1)使用同步控制机制;
(2)将全局共享数据变为线程私有的数据;
(3)改变变量的可视范围。
超线程
超线程技术是利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少CPU闲置时间,提高CPU运行速度。
虽然采用超线程技术能同时执行两个线程,但它并不像两个真正的CPU那样,每个CPU都具有独立的资源。当两个线程都同时需要某个资源是,其中一个要暂时停止,并让出资源,直到这些资源闲置后才能继续。因此超线程的性能并不等于两颗CPU的性能。
加速比
Amdahl定律
S = 使用单处理器执行程序所用的时间 / 使用p个处理器(处理核)执行所用的时间
Gaustafon定律
S = p - f(p - 1)

浙公网安备 33010602011771号