zoukankan
html css js c++ java
什么是进程And线程
原创
2015年02月01日 11:49:01
学习.net 时遇到了两个新词汇:进程和线程。书上的太深奥,就查了查资料,整合下,希望对大家有帮助。
【比喻】
:用手去抓苹果,很显然一根手指是不行,你需要至少两根手指才能抓起一个苹果。
在这里,用手抓苹果的事件就是一个进程。抓的过程可能需要多个手指协调,多个手指就是线程。
【进程】
:是操作系统中当前程序的一次执行。
要知道拥有单个CPU的电脑,在严格意义上,一个时间点上操作系统只能进 行同一个工作命令。由于计算机的运行速度快,在工作时可以运行一会A代码,运行一会B代码,交错运行,由于运算速度快,所以一般看 来它好像可以 同时进行多个程序--这就是多进程。同时开着QQ和飞信,这就是多进程。
线程:线程是程序中一个单一的顺序控制流程。进程内一个相对独立的、可调 度的 执行单元,是系统独立调度和分派CPU的基本单位指运行中的程序的调度单位。在单个程序中同时运行多个线程完成不同的工作,称为多线程。线程还 可以自己创建、撤销和切换。就像拿苹果,如果一根手指可以办到,那它就 是单线程,如果需要多根手指,那就是多线程。
进程和线程的区别:
(1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进 程的地 址空间;而进程有自己独立的地址空间;
(2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享 进程的 资源;
(3)线程是处理器调度的基本单位,但进程不是。
【概念拓 展】
:线程池和死锁。
线 程 池:程序可以有多个线程,这些线程在休眠状态中需要耗费大量时间 来等待 事件发生。为了简化对这些线程的管理,.NET框架为每个 进程提供了一 个线程池,一个线程池有若干个等待操作状态,当一个等待操作完成 时,线程池中的辅助线程会执行回调函数。
死 锁:常被称为“死机“。是指两个或两个以上的进程在执行过程中,由于 竞争 资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它 们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁, 这些永远在互相等待的进程称为死锁进程。
造成死锁的原因有两种:
一是:同一时刻很多程序(进程)争相访问同一资源。
二是:线程对资源的访问没有按照资源占有和释放的顺序来进行。避免线程 死锁进行的方法有:
1. 让线程之间具有排斥性的访问资源,即同一时刻,一个资源只能 被一个线程占用和使用。
2.当一个线程在某一时刻已经拥有了某个资源,但它还继续申请另 外一个新的资源,但该资源已经被其他线程占用,那么就应该将 已经占有的资源进行释放,而不是让它一直等待下去。
3.当一个线程已获得某个资源的时候,应等到使用完这个资源(对 其释放完后),再允许其他线程对此资源进行访问。
4 . 当资源已经被某个线程占有时,应避免所有线程循环等待同一资 源。
查看全文
相关阅读:
Linux 基础
Python 代码片段收藏
Oracle数据库介绍
Oracle11g数据库快速安装
Oracle11g客户端安装配置
Oracle环境变量
Oracle数据类型
Oracle的表
Oracle事务
Oracle的where子句
原文地址:https://www.cnblogs.com/lcword/p/8322393.html
最新文章
自动化运维(2)之一键式单实例安装MySQL
自动化运维(1)之二进制部署MySQL5.7
InnoDB存储引擎--Innodb Buffer Pool(缓存池)
python实现支持向量机之合页损失函数(理论四)
python实现支持向量机之软间隔(理论三)
python实现支持向量机之求解线性支持向量机(理论二)
python实现支持向量机之线性支持向量机定义(理论一)
python实现逻辑回归
python实现线性回归之弹性网回归
python实现线性回归之岭回归
热门文章
python实现线性回归之lasso回归
python实现线性回归之简单回归
程序猿笑话集合
工作中看到的一些小技巧
好用的命令行终端工具
Git基础 —— Github 的使用
Git 基础 —— 常见使用场景
Git 基础 —— 常用命令
Git 基础 —— 安装 配置 别名 对象
PyCharm/IDEA 使用技巧总结
Copyright © 2011-2022 走看看