日期:2009-06-26  浏览次数:20631 次

VB.NET中的多线程

介绍

多线程对VB的开发人员来说是一个新东西,VB的开发人员一直希望VB中包含这个特征,现在它出现VB.NET中。


多线程是Windows 95和Windows NT中的一个重要特征。多线程编程的能力需要系统的可靠设计,它等于要求确保CPU在线程之间切换不会导致不良事情发生。例如,可能有可被多于一个线程访问的数据,如链接列表,这时,就需要代码保证线程在时刻切换时不会把数据留在一个不一致的状态。可以通过使用同步对象来防止线程切换问题。

线程

一个或多个线程运行于Appdomain中,Appdomain是一个物理进程内逻辑进程在运行时间的表示。线程是操作系统分配进程时间的基本单元。每个Appdomain以单个线程作为开始,可以从它的任何线程再创建另外的线程。

每个线程维持不同的句柄、优先级安排、结构集,系统用它们来保存线程上下文直到线程被预定。线程上下文存在于线程所属过程的地址空间中,并包含了线程的寄存器集和堆栈。

支持有优先权的多任务的操作系统创造了多个进程的多个线程同时执行的效果。在一个多处理器的计算机上,一些操作系统可以真正同时执行和处理器一样多的线程。

多任务操作系统在进程或线程需要时分配可用的处理器时间。系统为有优先权的多任务作了设计,它可以为每个运行的线程分配时间片,当前运行线程在用完自己的时间片后挂起,同时允许其它线程开始运行。当系统从一个线程切换到另一个线程时,它保存先占线程的上下文并恢复队列中下一个线程的上下文。

同步

在写多线程应用程序时,在线程间同步资源访问是一个普遍的问题。两个或多个线程同时访问相同的数据会导致令人不快和不可预知的结果。例如,一个线程可以在另外一个线程读取结构的上下文的时候对同一个结构进行更新。读取结构的线程所获得的结果是未知的:原有数据、已更新数据或者是两者的混合。.NET提供许多同步和同步访问的类来帮助解决这一问题。