原创 2015年02月01日 11:49:01
 

学习.net 时遇到了两个新词汇:进程和线程。书上的太深奥,就查了查资料,整合下,希望对大家有帮助。

【比喻】:用手去抓苹果,很显然一根手指是不行,你需要至少两根手指才能抓起一个苹果。
        在这里,用手抓苹果的事件就是一个进程。抓的过程可能需要多个手指协调,多个手指就是线程。

【进程】:是操作系统中当前程序的一次执行。
                   要知道拥有单个CPU的电脑,在严格意义上,一个时间点上操作系统只能进
行同一个工作命令。由于计算机的运行速度快,在工作时可以运行一会A代码,运行一会B代码,交错运行,由于运算速度快,所以一般看 来它好像可以
同时进行多个程序--这就是多进程。同时开着QQ和飞信,这就是多进程。

线程:线程是程序中一个单一的顺序控制流程。进程内一个相对独立的、可调   度的
执行单元,是系统独立调度和分派CPU的基本单位指运行中的程序的调度单位。在单个程序中同时运行多个线程完成不同的工作,称为多线程。线程还
可以自己创建、撤销和切换。就像拿苹果,如果一根手指可以办到,那它就 是单线程,如果需要多根手指,那就是多线程。

进程和线程的区别:
                  (1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进  程的地 址空间;而进程有自己独立的地址空间;
                  (2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享   进程的 资源;
                  (3)线程是处理器调度的基本单位,但进程不是。

【概念拓 展】:线程池和死锁。
          线 程    池:程序可以有多个线程,这些线程在休眠状态中需要耗费大量时间   来等待
事件发生。为了简化对这些线程的管理,.NET框架为每个 进程提供了一 个线程池,一个线程池有若干个等待操作状态,当一个等待操作完成
时,线程池中的辅助线程会执行回调函数。
           死       锁:常被称为“死机“。是指两个或两个以上的进程在执行过程中,由于 竞争
资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它 们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,
这些永远在互相等待的进程称为死锁进程。
           造成死锁的原因有两种:

一是:同一时刻很多程序(进程)争相访问同一资源。

二是:线程对资源的访问没有按照资源占有和释放的顺序来进行。避免线程                        死锁进行的方法有:
                            1. 让线程之间具有排斥性的访问资源,即同一时刻,一个资源只能  被一个线程占用和使用。
                            2.当一个线程在某一时刻已经拥有了某个资源,但它还继续申请另 外一个新的资源,但该资源已经被其他线程占用,那么就应该将 已经占有的资源进行释放,而不是让它一直等待下去。
                            3.当一个线程已获得某个资源的时候,应等到使用完这个资源(对 其释放完后),再允许其他线程对此资源进行访问。
                           4 . 当资源已经被某个线程占有时,应避免所有线程循环等待同一资  源。

什么是进程And线程的更多相关文章

  1. 关于Java中进程和线程的详解

    一.进程:是程序的一次动态执行,它对应着从代码加载,执行至执行完毕的一个完整的过程,是一个动态的实体,它有自己的生命 周期.它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任务而 ...

  2. Java中的进程和线程

     Java中的进程与线程 一:进程与线程 概述:几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进程运行时,内部可能包括多个顺序执行流,每个顺序执行流就是 ...

  3. Java中的进程与线程(总结篇)

    详细文档: Java中的进程与线程.rar 474KB 1/7/2017 6:21:15 PM 概述: 几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进 ...

  4. C# - 多线程 之 进程与线程

    并行~并发 并发 Concurrency,逻辑上的同时发生,一个处理器(在不同时刻或者说在同一时间间隔内)"同时"处理多个任务.宏观上是并发的,微观上是按排队等待.唤醒.执行的步骤 ...

  5. Android 的进程和线程

    进程和线程 如果某个应用程序组件是第一次被启动,且这时应用程序也没有其他组件在运行,则android系统会为应用程序创建一个包含单个线程的linux进程.默认情况下,同一个应用程序的所有组件都运行在同 ...

  6. Python之路第一课Day9--随堂笔记之二(进程、线程、协程篇)

    本节内容 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者消费者模型 Queu ...

  7. python之进程与线程

    什么是操作系统       可能很多人都会说,我们平时装的windows7 windows10都是操作系统,没错,他们都是操作系统.还有没有其他的? 想想我们使用的手机,Google公司的Androi ...

  8. [转载]了解Linux的进程与线程

    本文转自Tim Yang的博客http://timyang.net/linux/linux-process/ .对于理解Linux的进程与线程非常有帮助.支持原创.尊重原创,分享知识! 上周碰到部署在 ...

  9. python 进程和线程

    python中的进程.线程(threading.multiprocessing.Queue.subprocess) Python中的进程与线程 学习知识,我们不但要知其然,还是知其所以然.你做到了你就 ...

  10. Python_Day10_进程、线程、协程

    本节内容    操作系统发展史介绍    进程.与线程区别    python GIL全局解释器锁    线程        语法        join        线程锁之Lock\Rlock\ ...

随机推荐

  1. python合并图片

    因项目需求需要将图片合并故写了一个python脚本,在这里放个笔记 #!/usr/bin/env python #coding=utf-8 import Image import os import ...

  2. TeX Live & TeXstudio 安装手记

    数据库课上又看到了那位用 beamer 做 slides 的师兄,想到自己一拖再拖的LaTeX入门,决定赶快动手装个环境再说~在经过一番搜索和研究之后决定先在 windows 底下试用,选择 TeX ...

  3. 在 github 中新建仓库后,如何上传文件到这个仓库里面。

    在 github 中新建仓库后,如何上传文件到这个仓库里面. libin@hglibin MINGW64 /e/github.io (master) $ git remote libin@hglibi ...

  4. mysql函数积累

    group_concat(),手册上说明:该函数返回带有来自一个组的连接的非NULL值的字符串结果.比较抽象,难以理解. 通俗点理解,其实是这样的:group_concat()会计算哪些行属于同一组, ...

  5. poj2253 Frogger(Floyd)

    题目链接 http://poj.org/problem?id=2253 题意 给出青蛙A,B和若干石头的坐标,现在青蛙A要跳到青蛙B所在的石头上,求出所有路径中最远那一跳的最小值. 思路 Floyd算 ...

  6. 《java虚拟机》----线程安全和锁优化

    No1: 线程安全:当多个线程访问一个对象时,如果不用考虑这些线程在运行环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这 ...

  7. Bzoj5188/洛谷P4185 [Usaco2018 Jan]MooTube(并查集)

    题面 Bzoj 洛谷 题解 最暴力的方法是直接判两个点之间的路径最小值是否\(\geq k\),用\(Dijkstra\)可以做到该算法最快效率,但是空间复杂度始终是\(O(n^2)\)的,会\(ML ...

  8. 详细理解Java虚拟机的运行过程

    基本概述: Java虚拟机简称JVM,是JRE中的一部分,也是Java程序运行的最关键的部分.完整的Java运行流程大致包括编译.java文件形成.class文件,然后根据.class文件的内容进行一 ...

  9. Unity Shader 之 uv动画

    Unity 动画 Unity Shader 内置时间变量 引入时间变量 名称 类型 描述 _Time float4 t是自该场景加载开始所经过的时间,4个分量分别是(t/20, t, 2t, 3t) ...

  10. shell中的cat和文件分界符(<<EOF) (转)

    原文地址: http://blog.csdn.net/mosesmo1989/article/details/51123257 在shell中,文件分界符(通常写成EOF,你也可以写成FOE或者其他任 ...