首页 | 麦客学吧 | 视频教程 | FLASH小游戏 | 素材下载 | 常用工具
您当前的位置:首页 > 程序开发 > VB.NET > 正文

vb.net的并发性问题

出处:麦客学吧 [2007-6-20 11:54:42] 点击数:1356

当用户在写出多线程程序的时候,可能最具有挑战性的就是独立的线程和程序的其他的部分有并发性。例如,程序中的一个独立的线程正在处理一系列的名称,而程序的另一个部分必须等待这个线程完成以后才能进行,通常处理并发性的线程的办法就是判断线程的状态或者通过一个事件去标志和得到一个特征值。
最简单的,也是效率最低的方法就是判断一个线程的IsAlive属性的值,当一个线程在开始(Start)以前它的属性IsAlive的值是"False",而在它运行的过程中,它的属性IsAlive的值是"True"。这种方法并没有通过一个事件去标志和得到一个特征值可靠,而且如果这样做的庆,也失去了自由线程的很多优点和便利之处。例如:
while anotherthread.IsAlive=False
'一直等待到该线程开始
End While
'线程已经开始,现在等待它结束
'While anotherthread.IsAlive=True
'等待一直等待到线程结束
End While
'作一些线程结束以后的事情
一个更好的处理线程并发性的办法就是使用事件,每一个线程都能够运行一个事件把它自己的状态以一个标志的形式给主程序一个值,或者是给其他一个线程一个具有标志自身状态后个值,这样当多个线程在运行一个过程的多个拷贝的时候,这些线程都具有自己特有的事件来标志各自的状态,则在线程之处的程序的其他的部分,就可以通过运行这些事件,得到线程的信息,并且进行下一步的信息的处理。例如:
Public Event Status(Byval ThreaStatus As Integer,Byval ThreadID As Integer)
vb.net 提供了SyncLock表述来使得在一个expression中一些statements可以具有并发性,这保证了多个线程在运行时不在同一时间里,运行相同的statements,当进入了SyncLock模块,共享的方法System.Monitor.Enter将在特定的expression下运行,一直到这个特定的线程对expression返回的对象有exclusive Lock以后,模块中的代码才会停止运行。
注意:expression的类型必须是可引用的那种类型
补充:SyncLock表述

语法:
SyncLock expression
...[Block]
End SyncLock
参数:
expression
必需的参数,一个单独的操作和值的集合,并能得到惟一的值。
功能:
SyncLock表述,能够确保多线程不在同一个时间内,运行相同的statements,当一个线程运行到一个SyncLock模块,并不是马上就执行模块里的代码,而是等到对expression返回的对象有锁定(lock)的权力。这使得expression在几个线程运行的时候改变了值,以至产生一些不可预料的错误。
注意:expression的类型必须是引用类型的,如一个类,一个模块,一个接口等等。

【责任编辑: lanier

关于 vb.net的并发性问题 的相关文章
昵 称:麦客网友[游客]  如果您不想匿名评论请先登录注册
评 论:请自觉遵守互联网相关政策法规,管理员有权删除恶意评论、广告和违禁词语。

验证码: 验证码,看不清楚?请点击刷新验证码    
麦客酷站赏析频道

精彩图文推荐

关于本站 - 联系站长 - 广告服务 - 合作伙伴 - 网站地图 - 版权声明 - 报告错误 - 收藏本站 | Http://www.MaiCoo.com

Copyright © 2005 - 2008 MaiCoo.com All Rights Reserved

违法和不良信息举报中心 本站服务器空间和带宽由雷克斯网络提供赞助
浙ICP备06017818号