- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CCh9(人邮)剖析
2012年2月29日10时35分 《Visual C#.NET程序设计教程(第2版)》 ——四川省精品课程、四川省高等教育质量工程建设项目 Email:LFQ501@ 第*页 人民邮电出版社与电子科技大学成都学院联合打造——精品教材 Visual C#.NET程序 设计教程(第二版) 2012年2月29日10时35分 《Visual C#.NET程序设计教程(第2版)》 ——四川省精品课程、四川省高等教育质量工程建设项目 Email:LFQ501@ 人民邮电出版社与电子科技大学成都学院联合打造——精品教材 第*页 电子科大成都学院计算机系 课件制作:罗福强、杨剑 E-Mail:LFQ501@SOHU.COm * 第9章 多线程和异步编程 1. 总体要求 了解进程及线程的概念。 掌握使用C#进行多线程的创建及简单控制。 掌握线程的同步策略。 了解线程池技术。 掌握异步编程的设计与实现技术 2. 学习重点 线程的启动、管理和终止 线程安全的实现 异步编程的实现方法。 第9章多线程和异步编程 主要内容 线程创建与控制 多线程的同步 9.3 9.1 9.2 多线程的概念 9.4 线程池 异步编程 9.5 9.1多线程的概念 9.1.1 线程和进程 9.1.2 线程的生命周期和状态 9.1.3 线程的优先级 返回 9.1.1 线程和进程 进程是一个正在运行的应用程序,拥有独立的资源,进程之间相互隔离,互不干扰。 线程是操作系统分配处理器时间的基本单元。一个进程可以包含一个或多个线程。线程共享其所属进程所拥有的资源。 线程处理通常分为两大类: (1)单线程处理:指一个进程中只能有一个线程 (2)多线程处理:指将一个进程划分为多个线程,可最大限度地利用处理器和用户的时间,提高系统的效率。 9.1.2 线程的生命周期和状态 从线程被创建到被终止称为线程的生命周期。 9.1.3 线程的优先级 优先级 属性 最高 Highest 具有该优先级的线程会最先被考虑调度执行 较高 Above Normal 具有该优先级的线程会在最高优先级的线程之后、正常优先级的线程之前被考虑调度执行 正常 Normal 具有该优先级的线程会在较高优先级的线程之后、较低优先级的线程之前被考虑调度执行 较低 Below Normal 具有该优先级的线程会在正常优先级的线程之后、最低优先级的线程之前被考虑调度执行 最低 Lowest 具有该优先级的线程会最后被考虑调度执行 9.2线程创建与控制 9.2.1创建和启动线程 9.2.2 控制线程 返回 9.2.1创建和启动线程 在.NET中,用户只需要利用System.Threading提供的大量线程编程类和接口来处理线程即可。其中,Thread类提供创建并控制线程、设置线程优先级并获取运行状态等功能。 Thread类的常用属性包括: CurrentThread:获取当前正在运行的线程 IsAlive:获取当前线程的执行状态。如果此线程已启动并且尚未正常终止或中止,则为 true;否则为 false。 Name:获取或设置线程的名称(默认为null)。 Priority:获取或设置线程的调度优先级(默认为ThreadPriority.Normal) ThreadState:获取当前线程的状态。 创建线程时,首先创建一个Thread类的对象,其构造函数的参数是一个ThreadStart委托,该委托用来引用一个被托管了的作为新的线程执行的方法。然后,调用Thread对象的Start()方法启动并执行新的线程。 操作演示:实例9-1 详细代码:见教材 执行效果: 9.2.2 控制线程 1.暂停和恢复线程 (1) 使用Thread.Sleep 立即将当前线程阻塞若干ms,进入WaitSleepJoin状态。调用Thread.Interrupt可提前恢复。 (2) 使用Thread.Suspend 将当前线程阻塞,但可调用Thread.Resume恢复。注意:与Sleep不同的是,Supspend不会使线程立即停止执行,一切由CLR安排;如果线程尚未启动或已经停止,则不能将其挂起。 (3) 使用Thread.Join 强制一个线程等待另一个线程而停止。 2.中断和中止线程 (1) 使用Thread.Interrupt 调用方法可中断处于休眠的线程,将其重新放回调度队列中,可引发ThreadInterruptedException异常。 (2) 使用Thread.Abort 调用该方法可永久地终止一个线程,可引发ThreadAbortException异常。 操作演示: 【实例9-2】 详细代码:见教材 运行效果: 9.3 多线程的同步 9.3.1线程安全 9.3.2 线程同步策略 返回 9.3.1线程安全 线程安全是指在多个线程
文档评论(0)