日期:2014-05-18 浏览次数:21157 次
//令牌环
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编程的书看看吧
------解决方案--------------------
临界区、互斥量、信号量、事件
这是实现线程同步的方式。
------解决方案--------------------
你最好先把线成的同步和通信的概念区分一下。貌似你混淆了