VB.NET多线程技术及其实现

豆豆网   技术应用频道   2006年07月29日    社区交流

本文详细介绍VB.NET多线程技术及其实现

  3.3 线程的优先级

  不同的线程具有不同的优先级,而优先级决定了线程能够得到多少CPU时间。高优先级的线程通常会比一般优先级的线程得到更多的CPU时间,如果程序中存在不止一个高优先级的线程,操作系统将在这些线程之间循环分配CPU时间。一旦低优先级的线程在执行时遇到了高优先级的线程,它将让出CPU给高优先级的线程。在Visual Basic.NET中,System.Threading.Thread.Priority枚举了线程的优先级别,这些级别包括Highest、AboveNormal、Normal、BelowNormal、Lowest。新创建的线程初始优先级为Normal。

  3.4 线程的状态

  线程从创建到终止,它一定处于某一个状态,而这个状态是由System.Threading.Thread.ThreadState属性定义的。当一个线程刚被创建时,它处在Unstarted状态,然后Thread类的Start() 方法将使线程状态变为Running状态,如果不调用相应的方法使线程挂起、阻塞、销毁或者终止,则线程将一直保持这样的状态。挂起的线程处于Suspended状态,直到我们调用resume()方法使其重新执行,这时候线程将重新变为Running状态。一旦线程被销毁或者终止,则线程处于Stopped状态,处于这个状态的线程将不复存在。线程还有一个Background状态,它表明线程运行在前台还是后台。而在一个确定的时间,线程可能处于多个状态。参见图2。

  图2 线程状态转换

  3.5 线程池

  在应用程序中使用多线程操作能优化应用程序性能,但是多线程往往需要花费更多的代码和精力去控制线程以及实现线程之间的轮询和状态转换。使用线程池则可以自动完成这些工作,同时还可以优化计算机的访问性能,从而更加有效的利用多线程的优势。使用线程池,可以使用要运行的过程的委托来调用 ThreadPool.QueueUserWorkItem 方法,VB .NET 将创建线程并运行该过程。以下代码说明了如何使用线程池启动多个任务。

作者:hlhero    责编:豆豆技术应用

正在加载评论...