线程基础
Windows 为什么要支持线程?
在早期的计算机,OS 没有线程的概念,整个系统执行着一个单线程,CPU 资源都被一个线程占用,你只能单一的处理一个
计算任务,比如单一处理打印,或一些其他的计算任务,当任务出BUG现异常,程序会停止响应,处理方式就是重启机器,
为了解决这个问题,基于多线程技术的操作系统MicroSoft Windows NT发展起来了.Windows NT 是最提出线程概念的Windows
OS.
进程:抽象的概念是指应用程序要使用的资源的集合。
线程:指对CPU 进行虚拟化.Windows 为每个进程都提供了该进程专用的线程(CPU 分片 抽象出来的一个专用CPU 概念)。
线程开销:
1.线程内核对象
2.线程环境块
3.用户模块栈
4.内核模式堆栈
5.DDL线程链接和线程分离(Attach AND detach)
使用线程的理由:
1.可响应性.
Windows 为每个进程提供它自己的线程,确保发生死循环的时候应用程序不会阻止其他的应用程序,在GUI 应用程序中,可以将一些工作交给
一个线程进行,使GUI 线程可以灵敏的响应用户,不会出现以前的那些windows 程序,冻结的情况。
2.性能
由于Windows 每个CPU 调度一个线程,而且多个CPU 能并发执行这些线程,所以,充分调动CPU 的计算能力,并发操作能显著的提高应用程序
的性能。
CLR 线程的种类
1.前台线程:执行系统确实想要执行的任务,比如我想写一篇文章,比如处理我写文章的这个线程就是前台线程.
2.后台线程:非关键性任务,比如写文章时候系统进行的拼写检查.
using System; using System.Threading; namespace BackGroundTreadTest { class Program { static void Main() { Thread t = new Thread(Worker); t.IsBackground = true;//Change it to a background Thread t.Start(); Console.WriteLine("Main Thread....."); } private static void Worker() { Thread.Sleep(10000); Console.WriteLine("Working...."); } } }
这一章节是操作系统线程的基本概念为异步并行编程做铺垫.
上一篇: C#使用Gecko实现浏览器