下载此文档

多线程编程技术大量提高应用程序的性能.doc


文档分类:IT计算机 | 页数:约18页 举报非法文档有奖
1/18
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/18 下载此文档
文档列表 文档介绍
VB .NET多线程编程技术--大量提高应用程序的性能2003年05月31日17:06:33 赛迪网 陶刚
同城约会
大连/征友
北京 上海
广州 深圳
成都 杭州
重庆 沈阳
武汉 南京
全国城市 上传我的照片不需要等待前面线程的结束。
下表是你能使用的控制单独线程的方法:
上面的大多数方法字面上容易理解,但是安全点(safe point)的概念对你来说可能是新的。安全点是代码中的某个位置,在这个位置通用语言运行时可以安全地执行自动无用单元收集(garbage collection,释放无用变量并恢复内存的过程)。当调用线程的Abort或Suspend方法时,通用语言运行时分析代码,决定线程停止运行的适当位置。
  下表是线程的一些常用的属性:
当建立和管理线程时它的属性和方法很重要。本文的"线程同步"部分将讨论你怎样使用这些属性和方法控制和调整线程。
  线程参数和返回值
前面例子中的线程调用没有参数和返回值。这是使用这种方法建立和运行线程的主要缺点之一。但是,你可以在类或结构体中包装线程,为运行在单独线程上的过程提供和返回参数。
Friend StrArg As String
Friend RetVal As Boolean
Sub SomeTask()
' StrArg字段是一个参数
MsgBox("The StrArg contains the string " & StrArg)
RetVal = True ' 设置返回参数中的返回值
End Sub
End Class
' 为了使用这个类,设置存储参数的属性或者字段,接着异步调用需要的方法
Sub DoWork()
Dim Tasks As New TasksClass()
Dim Thread1 As New (AddressOf )
= "Some Arg" ' 设置作为参数使用的字段
() ' 启动新线程
() ' 等待线程1结束
' 显示返回值
MsgBox("Thread 1 returned the value " & )
End Sub
Class TasksClass
手工建立和管理线程最适合于希望很好地控制细节(例如线程的优先级和线程模型)的应用程序。你可能想象,通过这种方法管理大量的线程是很困难的。在你需要很多线程时考虑使用线程池来减小复杂程度。
  线程池
线程池是多线程的一种形式,在它里面,事务被添加到一个队列,并随着线程的建立自动启动。有了线程池,,Visual Basic .NET就建立线程并运行该过程。下面的例子演示了怎样使用线程池启动几个事务:
Sub DoWork()
Dim TPool As
' 对一个事务排队
(New (AddressOf SomeLongTask))
' 对另一个事务排队
(New (AddressOf AnotherLongTask))
End Sub
当你需要启动很多单独事务而不需要单独设置每个线程的属性时,线程池是很有用的。每个线程使用默认的栈大小和优先级启动。默认情况下,每个系统处理器可以运行高达25个线程池线程。超过限制的线程可以排队,但是直到其它线程结束才能启动。
线程池的一个优点是你能把状态对象中的参数传递给每个事务过程。如果调用的过程需要一个以上参数,你可以把一个结构体或类的示例转换为Object数据类型。
  
参数和返回值
从线程池线程返回值有点棘手。从函数调用返回值的标准方法在这儿是不允许的,因为Sub过程是能被线程池排队的唯一过程类型。提供参数和返回值的途径是把这些参数,返回值和方法包装进一个包装类。提供参数和返回值的一个更简单的方法是使用QueueUserWorkItem方法的ByVal状态对象变量。如果使用该变量传递引用给类的一个

多线程编程技术大量提高应用程序的性能 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数18
  • 收藏数0 收藏
  • 顶次数0
  • 上传人1542605778
  • 文件大小157 KB
  • 时间2022-01-25