日期:2014-05-18 浏览次数:20968 次
//令牌环 object token = new object(); //共享资源 List<string> listString = new List<string>(); Thread tr1 = new Thread(new ThreadStart(prints)); Thread tr2 = new Thread(new ThreadStart(prints)); void prints() { while (true) { if (listString.Count > 0) { //进入临界区 Monitor.Enter(token); Console.Write(listString[0]); listString.RemoveAt(0); //推出临界区 Monitor.Exit(token); } } }
------解决方案--------------------
这是最简单的,至于互斥量和信号量思路和这个一样,也是有了权限才能进去临界区操作共享资源,在你操作的时候由于抢占了权限,其他线程就无法操作共享资源。
------解决方案--------------------
用 bool Monitor.TryEnter(token) 可以当得不到资源的时候就放弃
------解决方案--------------------
找本Windows编程的书看看吧
------解决方案--------------------
临界区、互斥量、信号量、事件
这是实现线程同步的方式。
------解决方案--------------------
你最好先把线成的同步和通信的概念区分一下。貌似你混淆了