日期:2014-05-18  浏览次数:20968 次

高分求解:线程间如何通信?
线程间如何通信呢,有人给答案说是:临界区、互斥量、信号量、事件
这几个该怎么理解呢,我还是很糊涂,希望看到相关源代码才好理解,求高手帮助,谁能帮我让我明白?

------解决方案--------------------
还有用文件的呢!!
------解决方案--------------------
C# code

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