并发、进程、线程的基本概念和综述
并发
并发表示两个或者更多任务(独立的活动)同时发生(进行)。例如,一面唱歌一面弹琴,一面走路一面说话,画画的时候听小说等。回归到计算机领域,所谓并发,就是一个程序同时执行多个独立的任务。
以往计算机只有单核CPU(中央处理器)的时候,这种单核CPU某一个时刻只能执行一个任务,它实现多任务的方式就是由操作系统调度,每秒钟进行多次所谓的“任务切换”,也就是这个任务做一小会如做10ms,再切换到下个任务再做10ms等,诸如此类。因为任务切换的速度很快,所以在人类的感觉中,好像是多个任务在同时进行中(并行执行),其实这是一种并发的假象(不是真正的并发)。当然,这种任务之间的切换(也称上下文切换)也有一定的时间开销,例如操作系统要保存任务切换时的各种状态、执行进度等信息,因为一会儿任务切换回来的时候要复原这些信息。
随着计算机硬件的发展,专门用于服务器和高性能计算领域的“多处理器计算机”,甚至是家用台式机等均已出现,早先都是单核CPU,而现在在一块芯片上有多个CPU,双核、四核屡见不鲜,甚至还有8核、10核甚至更多核等。这些多处理器计算机以及多核计算机能够真正实现并行执行多个任务(这叫硬件并发),因为有多个CPU,就可以同时做多件事情。当然,如果并发的任务数量超过了CPU的数量,如现在有10个任务,但却只是双核CPU,那任务切换这种事情肯定还是存在的。而当代的计算机,不难发现它们同时都在处理几百上千个任务,例如打开任务管理器就可以看到,如图所示,其中线程数量就可以理解为并发的任务数量。
例如有4个任务,CPU是一个双核CPU,任务切换如图所示(当然可能任务切换也不一定是这样的平均和均衡,因为操作系统的任务调度算法是很复杂的)。
可以看到,使用并发的原因主要就是能够让多件事情同时做,从而提高整体做事情的效率,也就是提高整体的运行性能。
可执行程序
可执行程序就是磁盘上的一个文件(也叫程序),如在Windows操作系统下,一个扩展名为