当前位置: 代码迷 >> C# >> 能不能给个多线程并发的例子
  详细解决方案

能不能给个多线程并发的例子

热度:288   发布时间:2016-05-05 05:32:20.0
请教各位能不能给个多线程并发的例子
比方说一个任务来了,让他去执行,然后又来了一个任务,接着在让他去执行。。。谢谢

------解决思路----------------------
引用:
比方说一个任务来了,让他去执行,然后又来了一个任务,接着在让他去执行。。。谢谢

队列+并发执行

public class MutexTest
 {
  private static int poolFlag = 0 ;//标记
  private const int amountThread = 10 ;//线程总量
  private const int maxThread = 3 ;//可执行线程最大数量
  private static Mutex muxConsole = new Mutex() ;
  
  public static void Main()
  {
   for ( int i = 0 ; i < amountThread ; i ++ )
   {
    // 创建指定数量的线程
    // 是线程调用Run方法
    // 启动线程
    Thread trd = new Thread( new ThreadStart( Run ) ) ;
    trd.Name = "线程" + i ;
    trd.Start() ;
   }
  }

  public static void Run()
  {                                                                                                                                                                                                                                         

   muxConsole.WaitOne();  //阻塞队列
   Interlocked.Increment(ref poolFlag) ;  //标记+1
   if (poolFlag != maxThread)             //判断是否等于上限
    muxConsole.ReleaseMutex();     //如果此线程达不到可执行线程上限,则继续开通,让后面的线程进来
   Console.WriteLine( "{0} 正在运行......\n", Thread.CurrentThread.Name ) ;
   Thread.Sleep( 5000 );                                                                                             //模拟执行
   Console.WriteLine( "{0} 已经中止......\n", Thread.CurrentThread.Name ) ;

   //标记-1
   Interlocked.Decrement(ref poolFlag) ; 
  }
 }

  相关解决方案