当前位置: 首页 > news >正文

如何给网站优化gta5房子网站建设中

如何给网站优化,gta5房子网站建设中,一个ip地址做多个网站,手机端网页开发C#多线程学习(六) 互斥对象 原文链接#xff1a;http://kb.cnblogs.com/page/42533/ 本系列文章导航 C#多线程学习(一) 多线程的相关概念 C#多线程学习(二) 如何操纵一个线程 C#多线程学习(三) 生产者和消费者 C#多线程学习(四) 多线程的自动管理(线程池) C#多线程学习(五) 多… C#多线程学习(六) 互斥对象                               原文链接http://kb.cnblogs.com/page/42533/ 本系列文章导航 C#多线程学习(一) 多线程的相关概念 C#多线程学习(二) 如何操纵一个线程 C#多线程学习(三) 生产者和消费者 C#多线程学习(四) 多线程的自动管理(线程池) C#多线程学习(五) 多线程的自动管理(定时器) C#多线程学习(六) 互斥对象 如何控制好多个线程相互之间的联系不产生冲突和重复这需要用到互斥对象即System.Threading 命名空间中的 Mutex 类。 我们可以把Mutex看作一个出租车乘客看作线程。乘客首先等车然后上车最后下车。当一个乘客在车上时其他乘客就只有等他下车以后才可以上车。而线程与Mutex对象的关系也正是如此线程使用Mutex.WaitOne()方法等待Mutex对象被释放如果它等待的Mutex对象被释放了它就自动拥有这个对象直到它调用Mutex.ReleaseMutex()方法释放这个对象而在此期间其他想要获取这个Mutex对象的线程都只有等待。 下面这个例子使用了Mutex对象来同步四个线程主线程等待四个线程的结束而这四个线程的运行又是与两个Mutex对象相关联的。 其中还用到AutoResetEvent类的对象可以把它理解为一个信号灯。这里用它的有信号状态来表示一个线程的结束。 // AutoResetEvent.Set()方法设置它为有信号状态 // AutoResetEvent.Reset()方法设置它为无信号状态 Mutex 类的程序示例 Code using System; using System.Threading; namespace ThreadExample { publicclass MutexSample{static Mutex gM1;static Mutex gM2;constint ITERS 100;static AutoResetEvent Event1 new AutoResetEvent(false);static AutoResetEvent Event2 new AutoResetEvent(false);static AutoResetEvent Event3 new AutoResetEvent(false);static AutoResetEvent Event4 new AutoResetEvent(false);publicstaticvoid Main(String[] args){Console.WriteLine(Mutex Sample ); //创建一个Mutex对象并且命名为MyMutexgM1 new Mutex(true,MyMutex); //创建一个未命名的Mutex 对象.gM2 new Mutex(true);Console.WriteLine( - Main Owns gM1 and gM2);AutoResetEvent[] evs new AutoResetEvent[4];evs[0] Event1; //为后面的线程t1,t2,t3,t4定义AutoResetEvent对象evs[1] Event2; evs[2] Event3; evs[3] Event4; MutexSample tm new MutexSample( );Thread t1 new Thread(new ThreadStart(tm.t1Start));Thread t2 new Thread(new ThreadStart(tm.t2Start));Thread t3 new Thread(new ThreadStart(tm.t3Start));Thread t4 new Thread(new ThreadStart(tm.t4Start));t1.Start( );// 使用Mutex.WaitAll()方法等待一个Mutex数组中的对象全部被释放t2.Start( );// 使用Mutex.WaitOne()方法等待gM1的释放t3.Start( );// 使用Mutex.WaitAny()方法等待一个Mutex数组中任意一个对象被释放t4.Start( );// 使用Mutex.WaitOne()方法等待gM2的释放Thread.Sleep(2000);Console.WriteLine( - Main releases gM1);gM1.ReleaseMutex( ); //线程t2,t3结束条件满足Thread.Sleep(1000);Console.WriteLine( - Main releases gM2);gM2.ReleaseMutex( ); //线程t1,t4结束条件满足 //等待所有四个线程结束WaitHandle.WaitAll(evs); Console.WriteLine( Mutex Sample);Console.ReadLine();}publicvoid t1Start( ){Console.WriteLine(t1Start started, Mutex.WaitAll(Mutex[]));Mutex[] gMs new Mutex[2];gMs[0] gM1;//创建一个Mutex数组作为Mutex.WaitAll()方法的参数gMs[1] gM2;Mutex.WaitAll(gMs);//等待gM1和gM2都被释放Thread.Sleep(2000);Console.WriteLine(t1Start finished, Mutex.WaitAll(Mutex[]) satisfied);Event1.Set( ); //线程结束将Event1设置为有信号状态}publicvoid t2Start( ){Console.WriteLine(t2Start started, gM1.WaitOne( ));gM1.WaitOne( );//等待gM1的释放Console.WriteLine(t2Start finished, gM1.WaitOne( ) satisfied);Event2.Set( );//线程结束将Event2设置为有信号状态}publicvoid t3Start( ){Console.WriteLine(t3Start started, Mutex.WaitAny(Mutex[]));Mutex[] gMs new Mutex[2];gMs[0] gM1;//创建一个Mutex数组作为Mutex.WaitAny()方法的参数gMs[1] gM2;Mutex.WaitAny(gMs);//等待数组中任意一个Mutex对象被释放Console.WriteLine(t3Start finished, Mutex.WaitAny(Mutex[]));Event3.Set( );//线程结束将Event3设置为有信号状态}publicvoid t4Start( ){Console.WriteLine(t4Start started, gM2.WaitOne( ));gM2.WaitOne( );//等待gM2被释放Console.WriteLine(t4Start finished, gM2.WaitOne( ));Event4.Set( );//线程结束将Event4设置为有信号状态}} } 程序的输出结果 结果 Mutex Sample - Main Owns gM1 and gM2 t1Start started, Mutex.WaitAll(Mutex[]) t2Start started, gM1.WaitOne( ) t3Start started, Mutex.WaitAny(Mutex[]) t4Start started, gM2.WaitOne( ) - Main releases gM1 t2Start finished, gM1.WaitOne( ) satisfied t3Start finished, Mutex.WaitAny(Mutex[]) - Main releases gM2 t1Start finished, Mutex.WaitAll(Mutex[]) satisfied t4Start finished, gM2.WaitOne( )Mutex Sample   从执行结果可以很清楚地看到线程t2,t3的运行是以gM1的释放为条件的而t4在gM2释放后开始执行t1则在gM1和gM2都被释放了之后才执行。Main()函数最后使用WaitHandle等待所有的AutoResetEvent对象的信号这些对象的信号代表相应线程的结束。 posted on 2012-05-06 19:01 Hao_Guo 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/HaoGuo/archive/2012/05/06/Thread6.html
http://www.zqtcl.cn/news/48356/

相关文章:

  • 网站外链怎么购买wordpress注册链接插件
  • 百度关键词优化软件网站如何做网站性能优化
  • 烟台网站推广广州公司php做视频直播网站
  • 建设营销型网站流程ftp上传网站
  • 网站建设基本情况最早做淘宝返利的网站
  • 建筑公司网站应该则么做设计书籍频道开放说明
  • 网站的管理维护企业录
  • 网站建设基本内容成都企业网站建设公司电话
  • 南通市建设工程网站做电子的外单网站有哪些的
  • 杭州模板建站定制鞍山网站
  • 为什么不能用来名字做网站名百姓网推广电话
  • 昆明定制化网站建设企业网站建设合同(一)
  • 哪里有培训网站开发订阅号上链接的网站怎么做的
  • 网页设计网站维护松江网站建设培训费用
  • 新乡彩票网站建设网站开发工作时间
  • 广东网站建设方案报价比一网站建设
  • 建设好网站的在线沟通功能全网项目资源整合平台
  • 0建设营销型网站步骤wordpress前台插件
  • 现在什么网站做推广比较好东营市东营网站设计
  • 聊城大型门户网站建设免费图片素材高清
  • 手机怎么开网站吕梁网络推广
  • 手机能建设网站吗东莞企业网站建设
  • 揭阳专业做网站网站建设怎么做账
  • 做美工需要知道的设计网站wordpress导航怎么添加连接
  • 制作网站企业微信建网站平台的
  • 网站推广和优化的原因网址创建
  • 建材 网站 模板直播软件怎么开发
  • 衡阳市城市建设投资有限公司网站网店推广发展趋势有哪些
  • 只做同城交易的网站wordpress极验证登录
  • 专业做域名的网站4网站免费建站