一般来说,一个CPU同一时刻只有一个进程上CPU,某些机器可能有多CPU,就可以做到多个进程同时运行,达到"并发"的效果,这种情况比较少见,目前我们平时使用的电脑都没有这种情况,看某些博客得知以前是有过这种方案存在的,但是实际上双CPU的方案会使得CPU必须使用默频运行,达到完全的统一,还有CPU之间也需要进行数据的同步,也有不少损耗
并发指的是给用户的感觉像是多个进程同时运行,但是实际上是因为进程切换的时间很快,导致感觉上像是多个进程同时运行,
多线程则是真正实现"并发"的效果,目前普遍的方案都是这样,单CPU多核心,在某些高端的芯片中,也是英特尔提出的,"超线程"的一种方式,使得逻辑核数翻倍,其实也是一种榨干硬件的方式,一个核心能上一个线程,但是这个线程有时候也会"休息",导致这时候核心也是一个空闲的状态,导致不能完全利用到核心算力,因此英特尔提出的这个方案其实就是一个核心管两个线程,,一个线程空出核心的时候,另一个线程就上核心,就类似于进程切换,将CPU利用起来.
目前情况下,多核CPU已经是一个普遍存在的东西,利用好多线程才能将硬件榨干.
通过实验可以得出,在一个六核的CPU上使用多线程进行MD5的运算,每个线程运算40次,每个线程耗时约3.5s,也就是说,3.5s完成一共240次运算,而单线程运算240次,则是耗费了24s,可以看到利用好多线程是能提高很多的生产力的.
当然,由于通信的便利,多线程的使用过程中一定要注意好对于公共变量的加锁,防止中断导致的数据乱套.