多线程的同步机制

多线程的同步机制

ID:20654367

大小:163.38 KB

页数:8页

时间:2018-10-14

多线程的同步机制_第1页
多线程的同步机制_第2页
多线程的同步机制_第3页
多线程的同步机制_第4页
多线程的同步机制_第5页
资源描述:

《多线程的同步机制》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、多线程的同步机制同步机制,实际上是事件驱动机制,意思是让线程•〒•时处于“休眠”状态,除非发生某个事件才触发。例如一个拷W文件,拷W线程完成一个程序块后,再唤醒进程条线程做一个格的填充。研究多线程的同步机制的必要性在于,多线程同步工作吋,如果同吋调川相同的资源就可能会ill现闷题,一般读fH是不会有问题的,但是,如果写入(全局变量、数据库),就会发生冲突,甚至产生死锁和竞争M题。在.NET^I1,使川ReaderWriterLockO类來实现同步,它脊两个重要的方法:AcquireWriterLock(时间)在该时间内锁定线程;RcleascWriterLo

2、ck()释放锁定。合理的设计,就可以实现同步:下面是一个例子:实例二-MicrosoftVisualBasic.NET[设计]-Forml.vb[设计P

3、(5

4、x

5、文件d)编辐(i)视囝迮)项目(I〕生成⑧调试d〕数据⑷格式位)工具d)窗口⑴帮助㈤印▼适▼盛S®X®▼若1,專

6、►Debug▼邊ft

7、e专11啼*曲

8、SCHDS3卜把玫S

9、§K弒纪

10、@囹Q▼工具箱WindowsForms数据组件窗体終指针ALabelALinkLabel•t>

11、ButtonRbiTextBoxMainMenupCheckBoxRadioButtonxvGroupBoxPictur

12、eBoxL]P^nelDataGrid•:.kr>•..笫规起始页Forml.vb[设计]*Forml.vb*解决方案资源管理器...9X岡旧丨®I©解决方案例二w(1项目tl1^1实例二申…引用AssemblyInfo.vb3Forml.vbJM3解…丨习类."Il索••I尾性Button1System.Windows.Ij^JZ3@1国]%服务器...分工具箱IImagelndex

13、

14、(none)A

15、ImageList(无)RightToLeftNoText开始Ljj中j%國简^命I2JTl分7U衣LJ納□□I■!索引结果(搜索项自定义控件,绘囝和呈现)

16、-找到1个主题

17、Eff馬性O动态帮助I输出就结孕XText控件中包含的文本。讀开始

18、

19、j1^1计戈记亊本

20、」第二童钱程

21、酌多浅程编程."

22、卽文挡3-Mil11⑺实例二-Mie•丁网i面酵関11:14’新添加的一个命名空间。ImportsSystem.ThreadingPublicClassFormlInheritsSystem.Windows.Forms.FormDimrwlAsNewReciderWriterLock()DimthdProduceAsThreadDimthdConsumeAsThreadDimmJCounterAsInteger’生产者线程

23、函数SubThreadProduceOWhileTrue’使用超时值获取阅读锁,Timeout.IriHrii为无限长等待超时时间rwl.AcquireWriterLock(Timeout.Infinite)WhilemiCounter<300ra.iCountcr+=1labProduce.Text=m_iCounter.ToStringOThread.Sleep(10)EndWhile’释放阅读锁rwl.RolcascWritcrLock()EndWhileEndSub’消费者线程函数SubThrcadConsumc()WhileTruerwl.Acqu

24、ireReaderLock(Timeout.Infinite)Whilem_iCountcr>0m_iCounter-=1labConsume.Text=miCounter.ToStringOThread.Sleep(10)EndWhilerwl.KeleaseKeaderLock()EndWhileEndSub’庐动线程的运行。PrivateSubButtonl_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButtonl.ClickButtonl.Enabled=Fals

25、eButton2.Enabled=TruethdProduce=NewThread(NewThreadStart(AddressOfThreadProduce))thdConsume=NewThread(NewThreadStart(AddressOfThreadConsume))thdProduce.Start()thdConsume.Start0EndSubPrivateSubForml_Closing(ByValsenderAsObject,ByValcAsSystem.ComponcntModcl.CancclEvcntArgs)HandlesMyB

26、ase.Closing’释放锁,而不管线程取锁的次数

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。