进程和线程的区别?什么时候用进程?什么时候用线程?
首先得知道什么是进程什么是线程?
我的理解是进程是指在系统中正在运行的一个应用程序;程序一旦运行就是进程,或者更专业化来说:进程是指程序执行时的一个实例。
线程是进程的一个实体。
进程——资源分配的最小单位,线程——程序执行的最小单位。
线程进程的区别体现在几个方面:
- 因为进程拥有独立的堆栈空间和数据段,所以每当启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这对于多进程来说十分“奢侈”,系统开销比较大,而线程不一样,线程拥有独立的堆栈空间,但是共享数据段,它们彼此之间使用相同的地址空间,共享大部分数据,比进程更节俭,开销比较小,切换速度也比进程快,效率高,但是正由于进程之间独立的特点,使得进程安全性比较高,也因为进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。一个线程死掉就等于整个进程死掉。
- 体现在通信机制上面,正因为进程之间互不干扰,相互独立,进程的通信机制相对很复杂,譬如管道,信号,消息队列,共享内存,套接字等通信机制,而线程由于共享数据段所以通信机制很方便。
- 属于同一个进程的所有线程共享该进程的所有资源,包括文件描述符。而不同过的进程相互独立。
- 线程又称为轻量级进程,进程有进程控制块,线程有线程控制块。
- 线程必定也只能属于一个进程,而进程可以拥有多个线程而且至少拥有一个线程。
进程与线程的选择取决以下几点:
- 需要频繁创建销毁的优先使用线程;因为对进程来说创建和销毁一个进程代价是很大的。
- 线程的切换速度快,所以在需要大量计算,切换频繁时用线程,还有耗时的操作使用线程可提高应用程序的响应。
- 因为对CPU系统的效率使用上线程更占优,所以可能要发展到多机分布的用进程,多核分布用线程。
- 并行操作时使用线程,如C/S架构的服务器端并发线程响应用户的请求。
- 需要更稳定安全时,适合选择进程;需要速度时,选择线程更好。
转载于:https://www.cnblogs.com/chenGG/p/10935371.html
进程和线程的区别?什么时候用进程?什么时候用线程?相关推荐
- 进程和线程的区别, 面相对象补充, 进程, 数据共享, 锁, 进程池, 爬虫模块(requests, bs4(beautifulsoup))...
一. 进程和线程的区别? 第一: 进程是cpu资源分配的最小单元. 线程是cpu计算的最小单元. 第二: 一个进程中可以有多个线程. ...
- java中进程和线程的区别和联系_进程和线程有什么联系和区别?
1.定义: 1) 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位. 2) 线程是进程的一个实体,是CPU调度和分派的基本单位,他是比进程更小的能独 ...
- 进程与线程的区别和联系
概念 进程 进程(Process )是指计算机中已运行的程序.进程曾经是分时系统的基本运作单位.--维基 · 进程是正在执行的程序: · 进程是可以分配处理器并由处理执行的实体: 线程 线程(Thre ...
- 进程和线程的区别 及 进程间通信的方式
1.进程和线程的区别 (1)进程和线程对比: 进程是对运行时程序的封装,是系统资源调度和分配的基本单位,进程可以看做是操作系统的并行机制. 线程是进程的子任务,cpu ...
- 程序,进程,线程的区别和联系
进程和程序区别和联系表现在以下方面: 1)程序只是一组指令的有序集合,它本身没有任何运行的含义,它只是一个静态的实体.而进程则不同,它是程序在某个数据集上的执行.进程是一个动态的实体,它有自己的生命周 ...
- C | 进程和线程的区别
C | 进程和线程的区别 1.概念: 进程是程序为了完成任务执行的一次过程,是一个动态的.进程包括两个集合.一个资源的集合,一个线程的集合. 线程是进程的进一步抽象.线程本质是运行一个线程函数,线程是 ...
- Java线程之多线程与多进程(1)——以操作系统的角度述说线程与进程
任务调度 线程是什么?要理解这个概念,须要先了解一下操作系统的一些相关概念.大部分操作系统(如Windows.Linux)的任务调度是采用时间片轮转的抢占式调度方式,也就是说一个任务执行一小段时间后强 ...
- php多线程模型,PHP进程模型、进程通讯方式、进程线程的区别分别有哪些?
PHP进程模型是一个正在执行的程序,可以分配给处理器并由处理器执行的一个实体:PHP进程通讯方式有管道及有名管道,信号,共享内存等:PHP进程线程的区别有进程是资源的分配和调度的一个独立单元,而线程是 ...
- Linux进程与线程的区别 详细总结(面试经验总结)
首先,简要了解一下进程和线程.对于操作系统而言,进程是核心之核心,整个现代操作系统的根本,就是以进程为单位在执行任务.系统的管理架构也是基于进程层面的.在按下电源键之后,计算机就开始了复杂的启动过程, ...
- 进程和线程的区别?什么时候用进程?什么时候用线程?----看到好的复制到自己的园子里哈哈...
进程和线程的区别?什么时候用进程?什么时候用线程? 答:首先得知道什么是进程什么是线程? 我的理解是进程是指在系统中正在运行的一个应用程序:程序一旦运行就是进程,或者更专业化来说:进程是指程序执行时的 ...
最新文章
- while (true) 和 for (;;) 到底哪个更快?
- ESXi上的固态硬盘识别为非SSD
- new,delete总结
- Windows下各个盘中的文件夹属性变为隐藏,怎么取消隐藏属性
- 学长毕业日记 :本科毕业论文写成博士论文的神操作20170327
- 【Python基础】高效的10个Pandas函数,你都用过吗?
- Linux的权限管理
- 使用ExecutorService来停止线程服务
- div 重新加载_使用React的HOC来完成模块的异步加载
- freemarker中遇到null报错的处理方法
- php中将SimpleXMLElement Object数组转化为普通数组
- TextBox禁止手动输入但是允许刷卡输入
- SpringMVC_day1
- Linux RTC驱动模型分析之rtc-proc.c
- 计算机处于离线状态是什么原因,电脑Cortana语音助手显示处于离线状态怎么办?...
- (VUM验证学习11) 使用ahb vip对GPIO进行验证框架搭建,寄存器模型集成和测试点拆解编写
- Centos7 安装teamviewer
- mysql冗余_如何合理使用数据库冗余字段的方法
- 中国电信上海电信光猫路由器设置和外接路由器
- 如何给php安装上pecl,php如何安装pecl扩展
热门文章
- 关于移动CRM的学习(一)
- MATLAB获取一个目录中的所有文件
- SSL ×××的强劲发展势头似乎表明,它将取代IPSec ×××
- 4.5.2 OSPF协议与链路状态算法
- 查看chrome驱动以及下载对应谷歌浏览器版本
- pcie 的bar和dma bar2
- php中一个经典的!==的用法
- APACHE 安装出错 configure: error: Cannot use an external APR with the bundled APR-util
- shell 下的运算表达
- Embedding Lua, in Scala, using Java(转)