c#多线程编程笔记3

c#多线程编程笔记3

ID:41037096

大小:46.00 KB

页数:6页

时间:2019-08-14

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

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

1、c#多线程编程笔记3a)       使用Mutex类Mutex是一个特殊的同步类,只能用来同步线程,不过Mutex可以跨进程对线程进行同步。Mutex类确保了一次只有一个线程可以访问同一资源。MSDN中的描述如下:“Mutex是同步基元,它只向一个线程授予对共享资源的独占访问权。如果一个线程获取了互斥体,则要获取该互斥体的第二个线程将被挂起,直到第一个线程释放该互斥体。”对互斥体,MSDN有如下描述:“互斥体有两种类型:局部互斥体和已命名的系统互斥体。如果使用接受名称的构造函数创建Mutex对象,则该对象与具有该名称的操作系统对象关联。已命名的系统互斥体在整个操

2、作系统中都可见,可用于同步进程活动。您可以创建多个Mutex对象来表示同一个已命名的系统互斥体,也可以使用OpenExisting方法打开现有的已命名系统互斥体。局部互斥体仅存在于您的进程内。您的进程中任何引用局部Mutex对象的线程都可以使用它。每个Mutex对象都是一个单独的局部互斥体。”例子4:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Threading; namespaceConsoleApplication1{classmutex4{privatest

3、aticMutexmut=newMutex();privateconstintnumIterations=1;privateconstintnumTreads=3; staticvoidMain(){ThreadmyThread=newThread(newThreadStart(MyThreadProc));myThread.Name="Thread"; ThreadmyThread1=newThread(newThreadStart(MyThreadProc));myThread1.Name="Thread1"; ThreadmyThread2=newThrea

4、d(newThreadStart(MyThreadProc));myThread2.Name="Thread2"; myThread.Start();myThread1.Start();myThread2.Start();} privatestaticvoidMyThreadProc(){for(inti=0;i

5、area",Thread.CurrentThread.Name); Thread.Sleep(500); Console.WriteLine("{0}isleavingtheprotectedarear",Thread.CurrentThread.Name); //mut.ReleaseMutex();} }}这个程序没有加入mut同步机制,运行结果如下:如果我们把mut.WaitOne()与mut.ReleaseMutex()前的//去掉,运行结果如下:可以看出,这样线程就完全按我们运行的顺序运行了!在这里值得一提的是Mutex.WaitOne有三种重载方

6、法:Mutex.WaitOne();Mutex.WaitOne(int[millisecondTimeOut],bool[exitContext]),Mutex.WaitOne(TimeSpan[timeout],bool[exitContext])其中第一参数是指超时的时间限止,第二个参数指定了线程在重新获取同步上下文之前是否需要先退出同步。例子5:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Threading; namespaceConsoleApplicat

7、ion1{classmutexWaitOne5{staticAutoResetEventautoEvent=newAutoResetEvent(false);//AutoResetEvent类表示一个本地等待处理事件,在释放了单个等待线程以后,该事件会在终止时自动重置。而ManualResetEvent在释放了单个等待线程之后只能手动重置 staticvoidMain(){Console.WriteLine("Mainstarting.");ThreadPool.QueueUserWorkItem(newWaitCallback(WorkMethod),autoE

8、vent)

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

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

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