c#多线程编程笔记2

c#多线程编程笔记2

ID:41037059

大小:35.50 KB

页数:4页

时间:2019-08-14

c#多线程编程笔记2_第1页
c#多线程编程笔记2_第2页
c#多线程编程笔记2_第3页
c#多线程编程笔记2_第4页
资源描述:

《c#多线程编程笔记2》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、c#多线程编程笔记2第三部分线程的同步同步的意思是在多线程程序中,为了使两个或多个线程之间,对分配临界资源的分配问题,要如何分配才能使临界资源在为某一线程使用的时候,其它线程不能再使用,这样可以有效地避免死锁与脏数据。脏数据是指两个线程同时使用某一数据,造成这个数据出现不可预知的状态!在C#中,对线程同步的处理有如下几种方法:a)       等待事件:当某一事件发生后,再发生另一件事。例子3:usingSystem;usingSystem.Collections.Generic;usingSystem.Te

2、xt;usingSystem.Threading; namespaceConsoleApplication1{publicclassClassCounter{protectedintm_iCounter=0;publicvoidIncrement(){m_iCounter++;}publicintCounter{get{returnm_iCounter;}}}publicclassEventClass{protectedClassCounterm_protectedResource=newClassCount

3、er();protectedManualResetEventm_manualResetEvent=newManualResetEvent(false);//ManualResetEvent(initialState),initialState如果为true,则将初始状态设置为终止;如果为false,则将初始状态设置为非终止。protectedvoidThreadOneMethod(){m_manualResetEvent.WaitOne();//在这里是将入口为ThreadOneMethod的线程设为等待m_

4、protectedResource.Increment();intiValue=m_protectedResource.Counter;System.Console.WriteLine("{Threadone}-Currentvalueofcounter:"+iValue.ToString());}protectedvoidThreadTwoMethod(){intiValue=m_protectedResource.Counter;Console.WriteLine("{Threadtwo}-current

5、valueofcounter;"+iValue.ToString());m_manualResetEvent.Set();//激活等待的线程}staticvoidMain(){EventClassexampleClass=newEventClass(); ThreadthreadOne=newThread(newThreadStart(exampleClass.ThreadOneMethod));ThreadthreadTwo=newThread(newThreadStart(exampleClass.Thr

6、eadTwoMethod)); threadOne.Start();//请注意这里,这里是先执行线程1threadTwo.Start();//再执行线程2,那么线程2的值应该比线程1大,但结果相反 Console.ReadLine();}}}  ManualResetEvent它允许线程之间互相发消息。结果如下:

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

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

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