C# 多线程-- Mutex (二)

System.Threading.Mutex在概念上和System.Threading.Monitor几乎完全一致,只是lock关键字用的不是它,而且它旨在进程间的同步。

Code

 运行以上代码生成的应用程序第一个实例,会得到结果

Running

 保持第一个运行状态,运行第二个实例,得到结果

Another is Running

 以上代码中创建了一个mutex,从其参数的解释中得知,第一个调用线程将得到互斥体的初始所属权,如果不释放的话,其他的线程得不到互斥体所有权

 下面看一段代码(出自 http://space.itpub.net/12639172/viewspace-448867 ),稍有改动

Code

 两个线程基本上是按照各自的时间间隔+TestFunc的执行时间对TestFunc函数进行读取

 将公共调用的函数加锁

Code

 再次运行查看结果,好像没什么区别?

 加入mutex

Code

 再次运行查看结果。

 

想到了什么?thread1Func() 或者thread2Func()中的全部执行完毕,之后释放互斥体,然后剩下的那个才可以访问。

 再改动一次

Code

 看效果……

 

 轮换执行……

posted @ 2009-10-22 17:04  hsrzyn  阅读(1301)  评论(0)    收藏  举报