基于VB.NET的多线程编程实现
摘 要 Visaul Basic 在6.0之前的版本中对多线程并没有提供一个很好的支持,而微软的.NET框架提供了新的类库,从而可以方便地创建多线程应用程序。 本文首先概述了进程、线程以及应用程序域的相互关系,随后介绍了如何使用Visual Basic.NET的多线程编程技术来开发效率更高,响应速度更快的应用程序。
关键词 .NET框架 Visual Basic.NET 多线程 同步
1. 引言
1.1 进程与线程和应用程序域
在操作系统中,进程被定义为应用程序的运行实例,是应用程序的一次动态执行。线程是进程内部程序执行的路径,是进程的一个执行单元。从根本上说,线程是可由系统调度的一个最简单的代码单元,负责执行包含在进程的地址空间中的程序代码。参见图1。
在.NET框架中,提出了应用程序域的概念。所有程序编译后生成的都是中间代码,而这些中间代码的隔离、加载和卸载以及安全边界的提供都是通过应用程序域来实现的。此时,一个进程可以包含一个或多个应用程序域,而一个应用程序域又可以包含一个或多个线程。这样实际上就相当于在进程和线程之间增加了一个新的安全边界。无论在同一个进程之内还是在不同的进程之间,每个应用程序域之间都是相互无关的,这些不同的应用程序域之间只能通过远程通讯来实现消息和对象的传递。
图1 进程、线程和应用程序域之间的关系
摘 要 Visaul Basic 在6.0之前的版本中对多线程并没有提供一个很好的支持,而微软的.NET框架提供了新的类库,从而可以方便地创建多线程应用程序。 本文首先概述了进程、线程以及应用程序域的相互关系,随后介绍了如何使用Visual Basic.NET的多线程编程技术来开发效率更高,响应速度更快的应用程序。
关键词 .NET框架 Visual Basic.NET 多线程 同步
1. 引言
1.1 进程与线程和应用程序域
在操作系统中,进程被定义为应用程序的运行实例,是应用程序的一次动态执行。线程是进程内部程序执行的路径,是进程的一个执行单元。从根本上说,线程是可由系统调度的一个最简单的代码单元,负责执行包含在进程的地址空间中的程序代码。参见图1。
在.NET框架中,提出了应用程序域的概念。所有程序编译后生成的都是中间代码,而这些中间代码的隔离、加载和卸载以及安全边界的提供都是通过应用程序域来实现的。此时,一个进程可以包含一个或多个应用程序域,而一个应用程序域又可以包含一个或多个线程。这样实际上就相当于在进程和线程之间增加了一个新的安全边界。无论在同一个进程之内还是在不同的进程之间,每个应用程序域之间都是相互无关的,这些不同的应用程序域之间只能通过远程通讯来实现消息和对象的传递。
图1 进程、线程和应用程序域之间的关系