一、进程与线程的区别

一个进程至少包含一个线程,线程可以在同一时刻做不止一件事情;进程是线程的容器,里面可以包含很多个线程。

进程:是资源分配的最小单位
线程:是程序执行的最小单位

区别一:

进程:父进程创建子进程(fork()函数创建子进程),是拷贝整个内存空间,后面进行优化成了写实拷贝。

线程:本身不具有内存空间,都是共享进程的内存空间。

区别二:

进程:进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其他进程产生影响。

线程:线程有自己的堆栈和局部变量,但没有独立的地址空间,多个线程是共享进程的内存空间,一个线程崩溃后,整个进程崩溃。

所以多进程的程序要比多线程的程序强壮,例如在多进程中一个进程出现段错误后,不会影响其他进程运行,而多线程中,一个线程出现段错误后整个进程崩溃。

区别三:

进程:进程在切换时资源消耗大,要开辟新的空间,所以效率要差一些。

线程:是寄生在一个进程中的,会共享数据,不用开辟新的内存空间,效率要高一些。

二、使用多线程的理由

1.线程是一种节俭的多任务操作方式,使用进程中相同的内存空间,所以线程切换快;而进程是一种昂贵的多任务方式,启动一个新的进程,需要分配独立的地址空间,建立众多的数据来维护他的代码段,堆栈段,数据段,所以进程间切换较慢。

2.因为线程之间数据共享,所以数据之间的通信就变得简单,而进程是新开辟了内存,要进行数据通信的话比较麻烦,要用到管道,共享内存等的通信,去调用API。

linux 线程与进程的简单区别相关推荐

  1. 到底什么是线程?线程与进程有哪些区别?

    上一篇文章我们讲述了什么是进程,进程的基本调度 http://t.csdn.cn/ybiwThttp://t.csdn.cn/ybiwT 那么本篇文章我们将了解一下什么是线程?线程与进程有哪些区别?线 ...

  2. linux线程 ppt,4 linux线程与进程.ppt

    4 linux线程与进程 第4章 进程与线程 4.1进程 2.进程 什么是程序? 进程的定义:可并发执行的程序在一个数据集合上的运行过程. 进程的特性 动态性:进程具有一定的生命周期,它由创建而产生, ...

  3. Linux 线程与进程,以及通信

    http://blog.chinaunix.net/uid-25324849-id-3110075.html 部分转自:http://blog.chinaunix.net/uid-20620288-i ...

  4. linux线程和进程详解,linux 进程和线程简介

    1.进程的概念 进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动.它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元. 2.轻量级进程 轻量级 ...

  5. 线程、进程、程序区别

    线程和进程最根本的区别在于线程是调度和执行的单位,而进程是资源分配的单位:线程是进程的一部分,所以线程又被成为轻量级进程:一个没有线程的进程看做是单线程的:线程只能共享它所属进程的资源. 程序是静态的 ...

  6. 操作系统的线程和进程的区别_面试官:你熟悉多线程嘛?线程跟进程有什么区别?...

    这篇文章跟大家聊聊线程,讲到线程,⼜不得不提进程了~ 进程我们估计是很了解的了,在windows下打开任务管理器,可以发现我们在操作系统上运⾏的程序都是进程. 什么是叫一个进程? 什么叫一个线程? 进 ...

  7. 线程和进程的简单理解

    首先来一句概括的总论:进程和线程都是一个时间段的描述,是CPU工作时间段的描述. 进程是计算机中的程序针对某数据集合进行的一次数据活动:进程是线程的容器,进程包含线程. 做个简单的比喻:进程=火车,线 ...

  8. python中线程和进程_python中线程和进程的简单了解

    一.操作系统.应用程序 1.硬件:硬盘.cpu.主板.显卡........ 2.装系统(本身也是一个软件): 系统就是一个由程序员写出来的软件,该软件用于控制计算机得硬盘,让他们之间进行互相配合. 3 ...

  9. linux 线程与进程 pid,linux下线程所属进程号问题

    这一段看<unix环境高级编程>,一个关于线程的小例子. #include #include #include pthread_t ntid; void printids(const ch ...

最新文章

  1. oracle数据库优化--基本概念
  2. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言—— 1055:判断闰年
  3. 【codevs1230】元素查找
  4. webpack 引入jquery和第三方jquery插件
  5. CentOS7 shell脚本安装jdk
  6. vue新增属性是否会响应式更新?
  7. OpenShift - 用CodeReady开发云原生应用(1)- 将可执行Quarkus应用部署到OpenShift
  8. Centos6.5不支持ip nets命令
  9. 关于C#中Thread.Join()的一点理解
  10. java excel 转txt_用Java实现excel转txt
  11. 哈工大物理学专业计算机知识怎样,哈尔滨工业大学应用物理学专业怎么样
  12. 为什么很多公司不要培训出来的Java程序员?
  13. win10运行窗口打开共享服务器很慢,win10局域网共享文件慢怎么办 局域网共享文件夹无法访问是什么原因...
  14. 使用springboot,Oauth2.0,jwt令牌实现单点登录,权限控制等功能的基本流程
  15. 二年级课程表(4月18日-4月22日)
  16. wow7.1 xd 新手教程
  17. 只有他自己知道——生活所迫罢了
  18. Android Studio导入工程项目一直处于gradle....而且一直卡在这个页面
  19. 使用Navicat远程连接oracle数据库
  20. c语言中doubt和double,doubt的用法

热门文章

  1. 基于GD32矩阵按键程序实现
  2. python练习小项目
  3. esight添加设备失败,可能SNMP参数不正确,网管与网元之间通讯异常或防火墙配置错误
  4. python — 项目命名规范
  5. ESP32-CAM 在 Web 服务器中拍照和显示
  6. tutorabc怎么学英文?我来说说自己的真实感受!
  7. idea的maven项目中报错:前言中不允许有内容
  8. python打开mat图像文件格式_如何读取mat文件 python
  9. Android中ROM的制作
  10. Microsoft SQL Server 2017安装教程