并发:同时执行多个独立任务。
虚假的并发:单核CPU(中央处理器)同时处理多个任务时,通过“上下文切换”,即在短时间(10ms)内切换不同任务给我们营造出一种同时处理多个任务的假象。
真正的并发:多核CPU同时处理多个任务,一个CPU同一时间只处理一个任务。但往往同一时间的任务数会多于核数,所以还是虚假的并发。
“上下文切换”缺点:在切换任务时需要保存上一任务处理后的数据以及读取上一次处理后的数据,造成时间和空间上的花费(开销)。
可执行程序:硬盘上的一个文件,可以执行的程序,如windows中的 .exe文件,linux上的.rwxrwxrwx文件。
进程:执行可执行程序就是创建一个进程,正在执行的可执行程序就是进程。每创建一个进程就会默默调用起一个主线程,所以一个进程可以有多个线程,有且仅有一个主线程。
线程:用来执行代码的,近似于一条代码的执行通路,可以自己创建(非主线程),每个线程需要一个独立的堆栈空间(1m),由于进程的创建而产生的才叫主线程,且随着主线程结束,进程也结束。注意:一个进程中的多个线程共享地址空间(内存空间),所以要注意同一进程中多个线程的数据一致性问题。
并发有两种:后面写的并发都是默认指的多线程并发。
①同时调用多个进程(但由于不同进程之间难以通信,如在同一电脑上微信难以直接获取QQ的信息,不同电脑的不同进程同理)。
②同时调用一个进程中的多个线程。优点:体量小,速度快。缺点:要考虑到由于在同一地址空间中的数据一致性问题。而且由于是虚假的并发以及线程需要独立的堆栈空间,线程太多会造成太多的开销,所以并不是线程越多效率越高,需要看情况增加线程数(一般不建议超过200-300个线程)。