必备知识架构-线程与网络-①线程
[toc]
–
知识架构
5、进程和线程的区别
(1)、进程和线程的区别
以下区别摘自:进程和线程的区别。
一个程序至少一个进程,一个进程至少一个线程。
一个线程只能属于一个进程,而一个进程可以有多个线程,且至少有一个线程。
进程线程的区别:
1
2
3
4
5
6
7
8
9 资源拥有:同一进程内的所有线程共享该进程的资源。如内存、I/O、cpu等,但是进程之间的资源是独立的。
地址空间:同一进程的线程共享本进程的地址空间,而进程之间则是独立的地址空间。
>
一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。所以多进程要比多线程健壮。
>
进程切换时,消耗的资源大,效率高。所以涉及到频繁的切换时,使用线程要好于进程。同样如果要求同时进行并且又要共享某些变量的并发操作,只能用线程不能用进程。
>
两者均可并发执行。
>
(2)、一个app运行时只有一个进程吗?有没有多进程?
一个正在运行的程序可以看做一个进程。(例如:正在运行的QQ就是一个进程),进程拥有独立运行所需的全部资源。
(3)、什么时候用进程?什么时候用线程?
进程与线程的选择取决以下几点:
1、需要频繁创建销毁的优先使用线程;因为对进程来说创建和销毁一个进程代价是很大的。
2、线程的切换速度快,所以在需要大量计算,切换频繁时用线程,还有耗时的操作使用线程可提高应用程序的响应
3、因为对CPU系统的效率使用上线程更占优,所以可能要发展到多机分布的用进程,多核分布用线程;
4、并行操作时使用线程,如C/S架构的服务器端并发线程响应用户的请求;
5、需要更稳定安全时,适合选择进程;需要速度时,选择线程更好。