高分求解:线程间如何通信?
线程间如何通信呢,有人给答案说是:临界区、互斥量、信号量、事件
这几个该怎么理解呢,我还是很糊涂,希望看到相关源代码才好理解,求高手帮助,谁能帮我让我明白?
[解决办法]
还有用文件的呢!!
[解决办法]
//令牌环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编程的书看看吧
[解决办法]
临界区、互斥量、信号量、事件
这是实现线程同步的方式。
[解决办法]
你最好先把线成的同步和通信的概念区分一下。貌似你混淆了