线程同步的问题? if (poolFlag !=maxThread)改为if (poolFlag <maxThread) 试试 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 因为 maxThread = 3所以 第3个线程执行:if (poolFlag !=maxThread) 判断后,未执行muxConsole.ReleaseMutex(); 注意:此期间, 第4个线程,在muxConsole.WaitOne(); 处挂起 然后 继续下面的,直到Interlocked.Decrement(ref poolFlag) ; 后 返回,由于线程3一直未muxConsole.ReleaseMutex,导致系统回收线程资源时,认定线程3 AbandoneMutex(muxConsole)此时 挂起的第4个线程catch到AbandoneMutexException 这样写是错误的,还不如直接用线程池:ThreadPool.SetMaxThreads(3,3);//设置线程池的最大线程数和异步时的最大线程数ThreadPool.QueueUserWorkItem(new WaitCallback(run));这样和你想要的效果是一样的 c# winform 如何做一个ppt的演示播放窗体 win764位装sql2008出现问题 四周半透明阴影边框的窗体要怎么做? C#语音识别问题 怎样把DataTable1里的数据拷贝到DataTable2里面?? js 访问本地服务 谁帮我看看这错误是怎么回事。 初级问题:大家帮忙! 有用过DevExpress套件的朋友吗? 请问各位大神IL代码里的ldfld !0什么意思! 动态生成RadioList的问题,在线等 ArrayList的问题,很困惑。请高手指点下
所以 第3个线程执行:if (poolFlag !=maxThread) 判断后,未执行muxConsole.ReleaseMutex();
注意:此期间, 第4个线程,在muxConsole.WaitOne(); 处挂起
然后 继续下面的,直到Interlocked.Decrement(ref poolFlag) ; 后 返回,
由于线程3一直未muxConsole.ReleaseMutex,导致系统回收线程资源时,认定线程3 AbandoneMutex(muxConsole)
此时 挂起的第4个线程catch到AbandoneMutexException
ThreadPool.QueueUserWorkItem(new WaitCallback(run));
这样和你想要的效果是一样的