多线程开发要理解的几个基本概念:进程、应用程序域、对象上下文

进程:进程是一个操作系统级别的概念,用来描述一组资源和程序运行所必需的内存分配。简单的理解,可以认为进程就是一个运行程序。对于每一个被加载到内存的*.exe程序,在它的生命周期中,操作系统会为之创建一个单独且隔离的进程,一个进程的失败不会影响其他进程。

线程:线程是进程中的基本执行单元,进程的入口点创建的第一个线程被称为主线程。.net执行程序使用Main()方法作为程序入口点。仅包含一个主线程的进程是线程安全的,这是由于在某个特定时刻只有一个线程访问程序中的数据,但是单线程在执行耗时长的复杂操作时,对用户来说会显得像没有响应一样。为了解决单线程的缺陷,可以构建次线程,每一个线程都是进程中的一个独立执行单元,能够同时访问那些共享数据。

简单的说,线程是windows进程中的独立执行单元。每一个进程都有一个主线程,且每个进程还可以创建额外的线程。

应用程序域:在.net平台下,可执行程序并没有直接承载在windows进程中,而传统的非托管程序是直接承载的。.net可执行程序承载在进程中的一个逻辑分区中,术语成为应用程序域(AppDomain)。一个进程可以包含多个应用程序域,每一个应用程序域中承载一个.net可执行程序。

对象上下文边界:应用程序域可以进一步被划分成多个上下文边界。简单的说,对象上下文为应用程序域中的给定对象划分指定逻辑容器。

小结:一个.net进程可以承载多个应用程序域。每一个应用程序域可以承载多个相关的.net程序集,一个给定的应用程序域中包含一个或多个上下文,使用上下文,可以将指定对象放置到一个逻辑容器中,确保该对象的需求能够被满足。理解这些基本概念的是为.net多线程开发打下基础。

深入理解.net多线程(一)的更多相关文章

  1. 3.如何理解开多线程可以充分利用CPU?

    如何理解开多线程可以充分利用CPU? <1>操作系统采用时间片轮转调度算法分配的时间片给每个进程中的线程 <2>操作系统的时间片轮转调度算法分配的时间片 在别的进程中都没有准备 ...

  2. 多线程协作wait、notify、notifyAll方法简介理解使用 多线程中篇(十四)

    在锁与监视器中有对wait和notify以及notifyAll进行了简单介绍 所有对象都有一个与之关联的锁与监视器 wait和notify以及notifyAll之所以是Object的方法就是因为任何一 ...

  3. 谈谈你对Java多线程的理解以及多线程的实现方式

    说线程之前先说进程,何为进程?进程就是正在进行中的程序.比如电脑同时在运行QQ进程.cmd进程.wps进程.飞秋进程等.在某一时刻,CPU只能执行一个程序,只是在做快速切换,我们肉眼看不出来. 比如: ...

  4. 彻底理解Python多线程中的setDaemon与join【配有GIF示意】

    在进行Python多线程编程时, join() 和 setDaemon() 是最常用的方法,下面说说两者的用法和区别. 1.join () 例子:主线程A中,创建了子线程B,并且在主线程A中调用了B. ...

  5. 深入理解Java多线程——线程池

    目录 为什么需要线程池 定义 ThreadPoolExecutor 工作队列workQueue 不同的线程池 Executor 线程池的工作原理 线程池生命周期 线程池增长策略 线程池大小的设置 线程 ...

  6. 深入理解Java多线程——ThreadLocal

    目录 定义 API 场景分析 场景实验,观察Spring框架在多线程场景的执行情况 10000此请求,单线程 10000次请求,线程数加到100 对c的访问加锁 把c设为ThreadLocal 收集多 ...

  7. 深入理解 Java 多线程核心知识

    多线程相对于其他 Java 知识点来讲,有一定的学习门槛,并且了解起来比较费劲.在平时工作中如若使用不当会出现数据错乱.执行效率低(还不如单线程去运行)或者死锁程序挂掉等等问题,所以掌握了解多线程至关 ...

  8. 2018跳槽面试必备之深入理解 Java 多线程核心知识

    导语:多线程相对于其他 Java 知识点来讲,有一定的学习门槛,并且了解起来比较费劲.在平时工作中如若使用不当会出现数据错乱.执行效率低(还不如单线程去运行)或者死锁程序挂掉等等问题,所以掌握了解多线 ...

  9. 深入理解 Java 多线程核心知识:跳槽面试必备

    多线程相对于其他 Java 知识点来讲,有一定的学习门槛,并且了解起来比较费劲.在平时工作中如若使用不当会出现数据错乱.执行效率低(还不如单线程去运行)或者死锁程序挂掉等等问题,所以掌握了解多线程至关 ...

随机推荐

  1. Nginx正向代理让无法直接上网的机器通过代理上网

    Nginx正向代理让无法直接上网的机器通过代理上网 在阿里云平台买了几台ECS.但是只要其中一台开通了公网.由于要初始化系统环境,需要网络安装相关依赖. Nginx正向代理配置: 一.Nginx 正向 ...

  2. display flex 和a标签不行

    父元素display: flex;  display: -webkit-flex; flex-flow: row wrap; -webkit-flex-flow: row wrap; 配合子元素 fl ...

  3. tomcat session失效时间

    conf\web.xml <session-config> <session-timeout>600</session-timeout> </session- ...

  4. ubuntu 下配置vim for python

    apt-get install vim-gnome apt-get install ctags apt-get install vim-scripts vim-addons install tagli ...

  5. Sqoop 将hdfs上的文件导入到oracle中,关于date类型的问题

    近期的项目中,需要将hadoop运行完成的结果(存在于hdfs上)导入到oracle中,但是在用sqoop导入hdfs中的日期字段'2016-03-01'时,sqoop报错,说date类型必须为'yy ...

  6. 8636 跳格子(dfs+记忆化搜索)

    8636 跳格子 该题有题解 时间限制:2457MS  内存限制:1000K提交次数:139 通过次数:46 题型: 编程题   语言: G++;GCC Description 地上有一个n*m 的数 ...

  7. js导入的注意.txt

    如有两个外部js文件: jquery-1.8.2.min.js Jqery的系统文件 LYFArray.js 和个人的 ===============我要将两个js文件导入一个页面的方法:====== ...

  8. android性能调优之traceview的使用

    1.在开始使用TraceView你要注意: 你的设备和模拟器必须设置SD card 和 你的程序拥有对SD card 具有读写操作的权限( <uses-permission android:na ...

  9. <context:component-scan>

    首先看配置文件: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http ...

  10. hdu_5753_Permutation Bo(找规律)

    题目连接:hdu_5753_Permutation Bo 题意: 给你一个有n个数的数列c1~cn,h1~hn为1~n的排列,求ci[hi>hi-1  and  hi>hi+1]的期望和. ...