VB实例编程:VB.NET中多线程程序开发之多线程的特点

考试站(www.examzz.com)   【考试站:中国教育考试第一门户】   2011年11月10日
 在写的一则日志中,对 VB.NET 中的多线程程序有了简单的认识,接下来,将会在这里发布一系列关于 VB.NET 中多线程的开发知识。
  多线程程序的特点
  每一个进程中,可以包含多个线程,按照微软官方文档的说明,在 Windows XP 中每个进程可以包含最多 2000 个线程。实际上,线程的数量是要受到内存的限制的,当然,并不是说线程越多越好。假设,现在系统中有两个进程在运行,进程A 仅有一个线程,即主线程,而进程B 有5 个线程,那么当前系统中的线程数,共有 6 个,操作系统会为每个线程分配时间片,这样进程A 获取到的时间片仅为 1/6,而进程B 获取到的时间片为 5/6,所以进程B 的执行就会影响到系统的整体运行,因此在线程数不能太多,要符合程序本身的要求。线程有以下几个特点:
  1. 分配给线程的时间不会得到保证
  2. 线程的激活顺序没有保证
  3. 不能认为发生在不同线程上的事件或操作是同步的,如果要想同步,那么必须进行显式的同步操作。
  下面,我们通过一个例子来理解线程的上述三个特点:
  Imports System.Threading
  Module MyThread
  Sub Main()
  Dim thA As New Thread(New ThreadStart(AddressOf M1))
  Dim thB As New Thread(AddressOf M2)
  thB.Start()
  thA.Start()
  Console.Read()
  End Sub
  Public Sub M1()
  Dim intCount As Integer
  For intCount=1 To 100
  Console.WriteLine("M1 方法正在执行 {0}...",intCount)
  Next
  End Sub
  Public Sub M2()
  Dim intCount As Integer
  For intCount=1 To 100
  Console.WriteLine("M2 方法正在执行 {0}...",intCount)
  Next
  End Sub
  End Module
  程序编译执行的结果如图(每次执行结果都会有变化):
  我们可以看到,M1 方法和 M2 方法执行的顺序是随机的,它不受程序控制,由操作系统的特征决定(时间片的分配方式),有些时候,这个结果并不是我们想要的,那么,如果才能灵活地控制线程的启动与执行呢?在下一节中,我们将会解决这一问题——封装线程。

 


相关文章