码迷,mamicode.com
首页 > 编程语言 > 详细

Clr Via C#读书笔记---线程基础

时间:2015-09-04 07:08:48      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:

进程与线程

进程:应用程序的一个实例使用的资源的集合。每个进程都被赋予了一个虚拟地址空间

线程:对CPU进行虚拟化,可以理解为一个逻辑CPU.

线程要素

线程包括以下要素:

1. 线程内核对象, 其中包含

  1)一组对线程进行描述的属性

  2)线程上下文,即包含CPU寄存器的集合的一个内存块

2. 线程环境块,在用户模式中分配和初始化的一个内存块,其中包含

  1)线程的异常处理链首  

  2)线程的"线程本地存储数据"

  3)由GDI和OpenGL图形使用的一些数据结构

3. 用户模式栈

  1)存储传给方法的局部变量和实参

  2)包含当前方法返回时,线程接着执行的地址

4. 内核模式栈

  1)用于应用程序代码想操作系统中的一个内核模式函数传递实参。Windows将实参从线程的用户模式栈复制到线程的内核模式栈

5. DLL线程连接和线程分离通知

上下文切换

上下文切换(30毫秒):线程运行的时间片也叫量程。

1. 保存CPU寄存器的值到线程内核对象的一个上下文结构中。还要考虑CPU的高速缓存(cache).

2. 调度线程。

3. 加载所选上下文结构中的值到CPU的寄存器中。

使用线程的理由

可以使用线程将代码同其他代码隔离;可以使用线程来实现并发执行;可以使用线程来简化编程;

零页线程:系统启动时,会创建一个系统中唯一的优先级为0的零页线程,负责在没有其他进程需要执行的时候,将系统RAM的所有空闲页清零。

显示创建线程

非普通优先级运行,表现为前台线程,需要长时间运行, 需要提前终止。

现在一个CLR线程直接对应一个Windows线程,将来LCR可能引入它自己的逻辑线程概念,使得一个CLR逻辑线程并非一定映射到一个物理Windows线程。

一个进程中所有的前台进程停止运行时,CLR强制终止仍在运行的任何后台进程。因此,前台进程应该用于执行确实想完成的任务。

Clr Via C#读书笔记---线程基础

标签:

原文地址:http://www.cnblogs.com/changrulin/p/4780983.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!