- 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
- 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
- 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
查看更多
读书札记电脑系统篇.pdf
D:\D 盘majun文档\微机学习札记\读书札记002\基于NET的多线程编程入门.doc
读书札记
电脑系统篇
马 军
2009-10
1
D:\D 盘majun文档\微机学习札记\读书札记002\基于NET的多线程编程入门.doc
基于NET 的多线程编程入门
2006.03.12
多线程在构建大型系统的时候是需要重点关注的一个
重要方面,特别是在效率(系统跑得多快?)和性能(系统
工作正常?)之间做一个权衡的时候。恰当的使用多线程可
以极大的提高系统性能。
*什么是线程?
每个正在系统上运行的程序都是一个进程。每个进程
包含一到多个线程。进程也可能是整个程序或者是部分程序
的动态执行。线程是一组指令的集合,或者是程序的特殊段 ,
它可以在程序里独立执行。也可以把它理解为代码运行的上
下文。所以线程基本上是轻量级的进程,它负责在单个程序
里执行多任务。通常由操作系统负责多个线程的调度和执
行。
*什么是多线程?
多线程是为了使得多个线程并行的工作以完成多项任
务,以提高系统的效率。线程是在同一时间需要完成多项任
务的时候被实现的。
使用线程的好处有以下几点:
·使用线程可以把占据长时间的程序中的任务放到后台去
2
D:\D 盘majun文档\微机学习札记\读书札记002\基于NET的多线程编程入门.doc
处理
·用户界面可以更加吸引人,这样比如用户点击了一个按
钮去触发某些事件的处理,可以弹出一个进度条来显示处理
的进度
·程序的运行速度可能加快
·在一些等待的任务实现上如用户输入、文件读写和网络
收发数据等,线程就比较有用了。在这种情况下我们可以释
放一些珍贵的资源如内存占用等等。
还有其他很多使用多线程的好处,这里就不一一说明
了。
一些线程模型的背景
我们可以重点讨论一下在 Win32 环境中常用的一些模
型。
·单线程模型
在这种线程模型中,一个进程中只能有一个线程,剩
下的进程必须等待当前的线程执行完。这种模型的缺点在于
系统完成一个很小的任务都必须占用很长的时间。
·块线程模型(单线程多块模型 STA)
这种模型里,一个程序里可能会包含多个执行的线程。
在这里,每个线程被分为进程里一个单独的块。每个进程可
以含有多个块,可以共享多个块中的数据。程序规定了每个
块中线程的执行时间。所有的请求通过 Windows 消息队列
3
D:\D 盘majun文档\微机学习札记\读书札记002\基于NET的多线程编程入门.doc
进行串行化,这样保证了每个时刻只能访问一个块,因而只
有一个单独的进程可以在某一个时刻得到执行。这种模型比
单线程模型的好处在于,可以响应同一时刻的多个用户请求
的任务而不只是单个用户请求。但它的性能还不是很好,因
为它使用了串行化的线程模型,任务是一个接一个得到执行
的。
·多线程块模型(自由线程块模型)
多线程块模型( MTA )在每个进程里只有一个块而
不是多个块。这单个块控制着多个线程而不是单个线程。这
里不需要消息队列,因为所有的线程都是相同的块的一个部
分,并且可以共享。这样的程序比单线程模型和 STA的执行
速度都要块,因为降低了系统的负载,因而可以优化来减少
系统 idle 的时间。这些应用程序一般比较复杂,因为程序员
必须提供线程同步以保证线程不会并发的请求相同的资源,
因而导致竞争情况的发生。这里有必要提供一个锁机制。但
是这样也许会导致系统死锁的发生。
*多线程在.NET 里如何工作?
在本质上和结构来说,.NET 是一个多线程的环境。有
文档评论(0)