《C#线程参考手册》读书笔记(一):定义线程

《C#线程参考手册》(C# Threading Handbook)是由清华出版社在2003年出版的一本关于C#线程编程的大作!

第一章  定义线程

 进程:

 "当启动应用程序时,系统会为该应用程序分配所需的内存以及其他资源。内存和资源的物理分离叫做进程!应用程序可以启动多个进程。"

     进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本域(text region),数据区域(data region),堆栈区域(stack region).

      文本域(text region) ,   用来存储处理器执行的代码。
      数据区域(data region), 存储变量和进程执行期间使用的动态分配内存。
      堆栈区域(stack region),存储着活动过程调用的指令和本地变量,堆栈内容随着进程发出的嵌套过程调用而增加,随着调用的返回来减少。

线程:

"进程也有一个由计算机的处理器使用的执行次序,这个执行次序就称为线程。线程由寄存器定义,记录CPU的使用情况,线程使用的堆栈以及跟踪线程当前状态的容器。这个容器就叫做线程本地存储区(TLS)"

一个线程标准的线程应该由:线程ID、当前指令指针、寄存器集合、和堆栈组成。线程在处理器上进行调度,每一个线程都能执行一组独立于其他进程和线程的指令集。

"可以将进程分解,来共享分给给它的时间片,通过在进程中产生额外的执行线程,就可以分解进程,可以产生一个额外的线程来完成后台的工作,例如访问数据库,这些辅助的线程通常用于完成某项工作,因此称为工作线程.在进程中产生的新线程被称为自由线程。"

AppDomain

当初微软设计.NET Framework 时,它又添加了一层称作应用程序域或AppDomain的隔离。应用程序域不是像进程那样的物理隔离;它是进程内部的进一步的逻辑隔离。由于在一个进程中可能有多个应用程序域,所以我们有一些优势。大体上说,对标准进程来说不通过代理访问其他进程的数据是不可能的, 而使用代理会导致重大开销和代码复杂化。然而,通过介绍应用程序域的概念,我们现在可以在一个进程中运行多个程序。进程提供的隔离在应用程序域中也存在。线程可以在不同应用程序域间执行而没有与相关的内部进程通信开销。这些额外的进程内部的壁垒的好处是他们对内部数据提供类型检查。

微软将这些应用程序域相关的所有功能封装到一个System.AppDomain的类中。微软.NET 程序集与这些应用程序域之间有紧密联系。任何时候当一个程序集被加载到一个程序中时,它实际上是被加载到应用程序域中。

原文地址:https://www.cnblogs.com/h20064528/p/2848988.html