线程和进程的区别:
1)进程是具有一定独立功能的程序,关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位;
2)线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(程序的计数器、一组寄存器和栈),但是它可以同属一个进场的其他的线程共享进程所拥有的全部资源;
3)一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行;
进程和线程的主要差别在于他们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程奔溃后,在保护模式下不会对其他进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。
进程的优点:
提供了多道编程,提高计算机CPU的利用率。多道编程的理解:可以将多个进程同时加载到内存中,在操作系统的调度下,可以实现并发的执行。这样就可以提供了CPU的利用率。
进程的缺点:
1)进程只能在一个时间内执行一件事,如果想同时执行两件事或者多件事,进程就无能为力了;
2)进程在执行的过程中如果阻塞,例如等待用户输入信息,整个进程就会挂起,即使进程中有些工作不依赖输入的数据,也将无法执行。
线程的优点:提高进程的并发度可以有效的利用多处理器和多核计算机。
线程的缺点:但同属于某个进程下的线程不可预知的原因导致死掉就会导致整个进程奔溃。