进程和线程的区别?什么时候用进程?什么时候用线程?

答:首先得知道什么是进程什么是线程?

我的理解是进程是指在系统中正在运行的一个应用程序;程序一旦运行就是进程,或者更专业化来说:进程是指程序执行时的一个实例。

线程是进程的一个实体。

进程——资源分配的最小单位,线程——程序执行的最小单位。

线程进程的区别体现在几个方面:

第一:因为进程拥有独立的堆栈空间和数据段,所以每当启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这对于多进程来说十分“奢侈”,系统开销比较大,而线程不一样,线程拥有独立的堆栈空间,但是共享数据段,它们彼此之间使用相同的地址空间,共享大部分数据,比进程更节俭,开销比较小,切换速度也比进程快,效率高,但是正由于进程之间独立的特点,使得进程安全性比较高,也因为进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。一个线程死掉就等于整个进程死掉。

第二:体现在通信机制上面,正因为进程之间互不干扰,相互独立,进程的通信机制相对很复杂,譬如管道,信号,消息队列,共享内存,套接字等通信机制,而线程由于共享数据段所以通信机制很方便。。

3.属于同一个进程的所有线程共享该进程的所有资源,包括文件描述符。而不同过的进程相互独立。

4.线程又称为轻量级进程,进程有进程控制块,线程有线程控制块;

5.线程必定也只能属于一个进程,而进程可以拥有多个线程而且至少拥有一个线程;

第四:体现在程序结构上,举一个简明易懂的列子:当我们使用进程的时候,我们不自主的使用if else嵌套来判断pid,使得程序结构繁琐,但是当我们使用线程的时候,基本上可以甩掉它,当然程序内部执行功能单元需要使用的时候还是要使用,所以线程对程序结构的改善有很大帮助。

进程与线程的选择取决以下几点:

1、需要频繁创建销毁的优先使用线程;因为对进程来说创建和销毁一个进程代价是很大的。

2、线程的切换速度快,所以在需要大量计算,切换频繁时用线程,还有耗时的操作使用线程可提高应用程序的响应

3、因为对CPU系统的效率使用上线程更占优,所以可能要发展到多机分布的用进程,多核分布用线程;

4、并行操作时使用线程,如C/S架构的服务器端并发线程响应用户的请求;

5、需要更稳定安全时,适合选择进程;需要速度时,选择线程更好。

转载于:https://www.cnblogs.com/lnn123/p/9911431.html

进程和线程的区别?什么时候用进程?什么时候用线程?----看到好的复制到自己的园子里哈哈...相关推荐

  1. 进程和线程的区别, 面相对象补充, 进程, 数据共享, 锁, 进程池, 爬虫模块(requests, bs4(beautifulsoup))...

    一. 进程和线程的区别?     第一:         进程是cpu资源分配的最小单元.         线程是cpu计算的最小单元.     第二:         一个进程中可以有多个线程.   ...

  2. java中进程和线程的区别和联系_进程和线程有什么联系和区别?

    1.定义: 1) 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位. 2) 线程是进程的一个实体,是CPU调度和分派的基本单位,他是比进程更小的能独 ...

  3. 进程与线程的区别和联系

    概念 进程 进程(Process )是指计算机中已运行的程序.进程曾经是分时系统的基本运作单位.--维基 · 进程是正在执行的程序: · 进程是可以分配处理器并由处理执行的实体: 线程 线程(Thre ...

  4. 进程和线程的区别 及 进程间通信的方式

    1.进程和线程的区别 (1)进程和线程对比:         进程是对运行时程序的封装,是系统资源调度和分配的基本单位,进程可以看做是操作系统的并行机制.         线程是进程的子任务,cpu ...

  5. 程序,进程,线程的区别和联系

    进程和程序区别和联系表现在以下方面: 1)程序只是一组指令的有序集合,它本身没有任何运行的含义,它只是一个静态的实体.而进程则不同,它是程序在某个数据集上的执行.进程是一个动态的实体,它有自己的生命周 ...

  6. C | 进程和线程的区别

    C | 进程和线程的区别 1.概念: 进程是程序为了完成任务执行的一次过程,是一个动态的.进程包括两个集合.一个资源的集合,一个线程的集合. 线程是进程的进一步抽象.线程本质是运行一个线程函数,线程是 ...

  7. Java线程之多线程与多进程(1)——以操作系统的角度述说线程与进程

    任务调度 线程是什么?要理解这个概念,须要先了解一下操作系统的一些相关概念.大部分操作系统(如Windows.Linux)的任务调度是采用时间片轮转的抢占式调度方式,也就是说一个任务执行一小段时间后强 ...

  8. php多线程模型,PHP进程模型、进程通讯方式、进程线程的区别分别有哪些?

    PHP进程模型是一个正在执行的程序,可以分配给处理器并由处理器执行的一个实体:PHP进程通讯方式有管道及有名管道,信号,共享内存等:PHP进程线程的区别有进程是资源的分配和调度的一个独立单元,而线程是 ...

  9. Linux进程与线程的区别 详细总结(面试经验总结)

    首先,简要了解一下进程和线程.对于操作系统而言,进程是核心之核心,整个现代操作系统的根本,就是以进程为单位在执行任务.系统的管理架构也是基于进程层面的.在按下电源键之后,计算机就开始了复杂的启动过程, ...

最新文章

  1. CF 8D Two Friends (三分+二分)
  2. tinycore Network card configuration during exec bootlocal.sh
  3. flask 注册路由和蓝图
  4. 图说数据中心新风节能技术
  5. pat1049. Counting Ones (30)
  6. 【PP生产订单】入门介绍(六)
  7. Python可视化 | Matplotlib绘制圆环图的两种方法!
  8. as3中使用字符串调用函数。
  9. 我和Django那些事儿(8)----相册django插件photologue,jQuery插件Slides
  10. python开发软件的实例-如何编写Python软件开发文档(7个技巧)
  11. 极简静态 Web 服务器
  12. 葡萄酒酒进销存单机版_葡萄酒销售问题| 找到销售葡萄酒的最大利润
  13. 小程序进阶-用户消息通知
  14. 免费扫书的条形码API,PHP代码实例
  15. 【知乎问答】有哪些特殊的搜索引擎?
  16. 无法成功完成操作,因为文件包含病毒或潜在的垃圾软件。
  17. Android和Java中的回调函数
  18. Android native和h5混合开发几种常见的hybrid通信方式
  19. 数据库被攻击 怎么解决
  20. 关于b站M_Studio的学习笔记

热门文章

  1. 深入理解JavaScript系列(23):JavaScript与DOM(上)——也适用于新手
  2. 车联网技术对中老年人吸引力更大
  3. wp配置后台自动更新
  4. 如何构造强度较高的密码
  5. 1.1.2 ADO.NET模型
  6. 典型方法_华北电力大学 赵振兵等: 输电线路典型金具视觉检测方法研究
  7. Python 哪种方式循环最快,或许颠覆你的认知
  8. python错误和异常处理怎处理你知道么
  9. Python 中读取和保存图像方法汇总及其区别
  10. 零基础 8 周掌握 Python,成为全能人才!