ASPNET多线程编程(一).pdfVIP

  • 9
  • 0
  • 约7.96千字
  • 约 36页
  • 2021-03-11 发布于黑龙江
  • 举报
ASP.NET多线程编程(一) 讲师:邵志东 课前准备 • Dot Net FrameWork • VS.NET 2002/2003 • C#/VB.NET • Level 200 议程 • 线程原理概述 • .NET下的多线程编程 • 异步编程 • ASP.NET多线程编程 线程基本概念 • 线程是程序执行的基本原子单位. 一个进程可以由多个线 程组成. • 每个线程都维护异常处理程序、调度优先级和一组系统用 于在调度该线程前保存线程上下文的结构。线程上下文包 括为使线程在线程的宿主进程地址空间中无缝地继续执行 所需的所有信息,包括线程的CPU 寄存器组和堆栈。 • 在分布式编程中,正确使用线程能够很好的提高应用程序 的性能及运行效率.实现原理是将一个进程分成多个线 程,然后让它们并发异步执行,来提高运行效率. • 并发执行并不是同时执行( 占有CPU),任意时刻还是只能 有一个线程占用CPU,只不过是它们争夺CPU频繁一些, 感觉到他们似乎都在运行. 进程举例 设一个进程要完成两个任务:任务1和任务2,并且任务1 要经历: A1-B1-C1三个步骤才能完成;任务2要经历: A2-B2-C2三个步骤才能完成。 1. 如果两个任务同步执行的话完成两个任务是这样执行的: 花费时间段: 1 2 3 4 5 6 A1-B1-C1-A2-B2-C2 这样从A1一直到c2只能一个一个地执行. 当A1 占用CPU 执行时,从B1到C2线程只能在等待. 2. 如果两个任务异步执行的话,完成两个任务是这样执行的: 花费时间段: 1 2 3 4 5 6 A1-B1-C1 A2-B2-C2 这样,任务1和任务2就分成两个独立的执行对象. 什么时候用线程? • 一般情况下,如果多个线程在执行时都要抢占某 一个资源或某几个资源,则最好不用异步线程执 行.因为它们是并发执行,很可能同时争夺某个资 源有CPU,这时要么执行资源分配算法(比如要判 断哪个线程优先级高,这要花费时间),或者是按时 间片算法(这样要付出轮询CUP/交接/让出CPU 所需的时间). • 如果多个线程所需要的系统资源是比较均匀的, 这时完全可以让它们异步并发执行, 使用线程的缺点 • 统将为进程和线程所需的上下文信息使用内存。 因此,可以创建的进程、AppDomain 对象和线 程的数目会受到可用内存的限制。 • 跟踪大量的线程将占用大量的处理器时间。如果 线程过多,则其中大多数线程都不会产生明显的 进度。如果大多数当前线程处于一个进程中,则 其他进程中的线程的调度频率就会很低。 • 使用许多线程控制代码执行非常复杂,并可能产 生许多错误。 • 销毁线程需要了解可能发生的问题并对那些问题 进行处理。 议程 • 线程原理概述 • .NET下的多线程编程 • 异步编程 • ASP.NET多线程编程 .NET下的多线程编程 • Thread类的使用 • 带参数线程 • 委托与线程 • 应用程序域 • 临界区操作 System.Threading • 提供一些使得可以进行多线程编程的类和 接口。此命名空间包括管理线程组的 ThreadPool 类、使得可以在指定的时间后 调用委托的Timer 类以及用于同步互斥线 程的Mutex 类。System.Threading 还提 供用于线程调度、等待通知和死锁解析的 类。 • using System.Threading;

文档评论(0)

1亿VIP精品文档

相关文档