下载此文档

C多线程学习(六) 互斥对象.doc


文档分类:IT计算机 | 页数:约6页 举报非法文档有奖
1/6
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/6 下载此文档
文档列表 文档介绍
C#多线程学****六)互斥对象如何控制好多个线程相互之间的联系,不产生冲突和重复,这需要用到互斥对象,即:。我们可以把Mutex看作一个出租车,乘客看作线程。乘客首先等车,然后上车,最后下车。当一个乘客在车上时,其他乘客就只有等他下车以后才可以上车。而线程与Mutex对象的关系也正是如此,()方法等待Mutex对象被释放,如果它等待的Mutex对象被释放了,它就自动拥有这个对象,()方法释放这个对象,而在此期间,其他想要获取这个Mutex对象的线程都只有等待。下面这个例子使用了Mutex对象来同步四个线程,主线程等待四个线程的结束,而这四个线程的运行又是与两个Mutex对象相关联的。其中还用到AutoResetEvent类的对象,可以把它理解为一个信号灯。这里用它的有信号状态来表示一个线程的结束。//()方法设置它为有信号状态//()方法设置它为无信号状态Mutex类的程序示例:CodeusingSystem;;namespaceThreadExample{lassMutexSample{ staticMutexgM1; staticMutexgM2; constintITERS=100; staticAutoResetEventEvent1=newAutoResetEvent(false); staticAutoResetEventEvent2=newAutoResetEvent(false); staticAutoResetEventEvent3=newAutoResetEvent(false); staticAutoResetEventEvent4=newAutoResetEvent(false); publicstaticvoidMain(String[]args) {("MutexSample");//创建一个Mutex对象,并且命名为MyMutexgM1=newMutex(true,"MyMutex");//=newMutex(true);("-MainOwnsgM1andgM2");AutoResetEvent[]evs=newAutoResetEvent[4];evs[0]=Event1;//为后面的线程t1,t2,t3,t4定义AutoResetEvent对象evs[1]=Event2;evs[2]=Event3;evs[3]=Event4;MutexSampletm=newMutexSample();Threadt1=newThread(newThreadStart());Threadt2=newThread(newThreadStart());Threadt3=newThread(newThreadStart());Threadt4=newThread(newThreadStart());

C多线程学习(六) 互斥对象 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数6
  • 收藏数0 收藏
  • 顶次数0
  • 上传人q1188830
  • 文件大小37 KB
  • 时间2020-01-06