程序、进程和线程的区别
来源:互联网 发布:数学答题软件下载 编辑:程序博客网 时间:2024/05/27 12:22
以前一直搞不清楚这个问题,最近看了《现代操作系统》这本书,有了点深入的了解,在此记录一下。
1、首先来看程序和进程:
曾经我认为这两者应该是没有什么区别的,实则不然。在这里可以引用书里的比方,假如有一个厨师要根据一个食谱做一个蛋糕,那么这个厨师就好比CPU,而食谱就是程序(以一定形式写好的算法),当然还有输入数据——面粉、糖、水等等材料,和输出结果——蛋糕,这一整个过程就是进程,即CPU对程序进行调度执行的整个过程。进程进程,说的应该就是进行中的程序吧。
2、再来看进程和线程:
线程就好比迷你的进程,它用较少的资源,处理进程中某个特定的任务,它容易撤销也容易创建,在许多操作系统中,创建一个线程要比创建一个进程快10~100倍。进程就是一个大的任务,其中包含了各种小任务,交给了不同的线程去完成。
但是,这一点,实际上并不能很好的说明引入线程的原因,让我们再深入研究一下。
有过多线程编程经验的程序员都知道,比如我们写一个程序,程序设计了两个任务,一个是从UI界面中的列表显示一些文字数据(比如微博吧),然后还有一个任务是发出POST/GET请求到服务器获取数据,需要在获取了数据后才能在UI中的列表显示出文字数据,假如我们把这两个任务写到了同一条线程中,我们会发现在向服务器发请求的时候,UI是会卡死的,因为一条线程中的资源有限,只能做一定规格的任务(比如移动开发中的主线程只能用于UI操作),于是只好向系统多申请点资源——创建新的线程用来完成向服务器发出请求的任务。
由此,我们可以看出,引入线程很好地解决了资源利用问题,还有两个很好的优点:
⑴创建速度快,资源调用及时——轻便快捷
⑵解决进程中的资源耦合度,让你知道什么资源在做什么任务——解耦
接下来我要讲的东西想必看了上面的内容的人都懂了,为什么不干脆直接在创建进程的时候分配所有会用到的资源?
因为怕浪费,CPU在运行一个程序的时候经常不会用到它所有的功能,分配资源过多会造成浪费
为什么引用线程,不干脆在进程里面创建小进程就好?
一是于理不合,不符合人的行为习惯。二是创建进程速度慢——可能是因为它有一些不必要的设定吧。
以上有部分内容为个人观点,如有不正确的地方欢迎指出或者提问,我会及时更正。
- 进程和线程的区别,进程和程序的区别
- 程序, 进程 和线程的区别
- 进程,线程,程序的区别和联系
- 进程、程序和线程的区别
- 程序、进程和线程的区别
- 进程、线程和程序的区别
- 程序、线程和进程的区别是什么?
- 程序 进程 线程 的区别和联系
- 进程与程序及进程和线程的区别
- 程序、进程、线程的区别
- 进程、线程、程序的区别
- 程序、进程、线程的区别
- 线程,进程,程序的区别
- 线程,进程,程序的区别
- 程序,进程和线程的区别与联系
- 进程和线程的区别,作业,程序,管程等概念
- 程序、任务、进程和线程的联系与区别
- java中程序,进程和线程的区别
- 漫谈经典排序算法:一、从简单选择排序到堆排序的深度解析
- linux 计算时间 time
- 新闻类APP模板详解(iOS版)
- pthread_cleanup_push() 和 pthread_cleanup_pop()
- 状态模式
- 程序、进程和线程的区别
- ios + cocos2d-x 计数统计提示相应信息
- ios的AutoresizingMask属性
- Flash 2D/2.5D 简单的Y轴深度排序
- 数据库连接的一般步骤
- Object-关于NSAutoReleasePool的理解
- linux下Makefile学习之六(使用函数)
- jredis分片选择数据库且支持服务器故障动态过滤
- iOS 之正则表达式