进程和线程的基本特点和区别
时间:2019-02-11
本文章向大家介绍进程和线程的基本特点和区别,主要包括进程和线程的基本特点和区别使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
几乎所有的操作系统都支持同时运行多个任务,一个任务通常就是一个程序,每个运行中的程序就是一个进程。
当一个程序运行时,内部可能包含了多个顺序执行流,每个顺序执行流就是一个线程。
1、进程
进程是处于运行中的程序,具有一定的独立能力,是系统进行资源分配和调度的一个独立单位。
进程的特点:
- 独立性
- 独立存在的实体,拥有自己独立的资源,拥有自己的私有地址;
- 在没有经过进程本身允许的情况下,一个用户进程不能访问其它进程地址空间。
- 动态性
- 程序只是一个静态的指令集合,而进程是一个正在系统中活动的指令集合;
- 进程在程序中加入了时间概念,具有自己的生命周期和各种不同的状态。
- 并发性
- 多个进程可以在单个处理器上并发执行,不会互相影响。
2、线程
线程是进程的执行单元,也称为轻量级进程。
就像进程在操作系统中的地位一样,线程在程序中是独立、并发执行流,当进程被初始化后,主线程就被创建。
线程的特点:
- 线程是进程的组成部分,一个线程必须有一个父进程,一个进程可以拥有多个线程;
- 一个程序运行后至少有一个进程,一个进程至少包含一个线程;
- 线程可以拥有自己的堆、栈、局部变量,但不能拥有系统资源。
- 多个线程共享父进程的全部资源,相互之间协作共同完成进程所要完成的任务;
3、多线程
多线程的运行方式:
- 线程是独立运行的,它并不知道进程中是否还有其它线程存在;
- 线程的执行是抢占式的,当前运行的线程在任何时候都可以被扶起,以便其它线程运行;
- 一个线程可以创建和撤销另一个线程,同一个进程中的多个线程可并发执行;
- 多线程扩展了多进程,使同一个进程可以同时并发处理多个任务。
多线程的优点:
- 进程之间不能共享内存,但线程之间共享内存很容易;
- 系统创建进程需要重新分配系统资源、内存空间,但创建线程则很简单,因此用多线程来实现多任务并发比多进程效率高;
- silverlight 2 Random 随机数解决方案
- 开发中巧用Enum枚举类型
- Jquery 事件冒泡
- Vue2的单元测试与调试技术
- silverlight beta 2 将在本周末发布.
- [Silverlight 4 RC]WebBrowser概览
- 英文域名chosen.com超22万元易主
- 简单介绍Docker的架构特性与局限
- .NET4.0下网站应用程序用UrlRewriter.dll重写无后缀路径 (在IIS7.5中的配置方法)
- 微信搜索新发现:iPhone 内存不足看这里!
- 建立可扩展的silverlight 应用框架 step-6
- .NET4.0下网站应用程序用UrlRewriter.dll重写无后缀路径 (在IIS7.5中的配置方法)
- 苹果为你的心跳开发一个读者
- 建立可扩展的silverlight 应用框架 step-5
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 打造自己最喜爱的 Windows10 —— 系统与软件配置优化篇
- 编译安装 IgBinary 扩展
- Python3入门学习二.md
- 编译安装 Yaml 扩展
- 一行代码不用写,就可以训练、测试、使用模型,这个star量1.5k的项目帮你做到
- 打造自己最喜爱的 Windows10 —— 纯命令安装系统篇
- Ubuntu18.04 切换 Python 版本
- Python3入门学习三.md
- Yur 主题 MarkDown 展示
- Python3入门学习一.md
- 前后端分离探索——MVC 项目升级的一个过渡方案
- Python3配置和入坑.md
- 别再被叫linux小白了,你跟linux高手只差这8个快捷键命令?
- CentOS7 手动部署 BBR
- 为受管理的 PC 设置 Chrome 浏览器政策