VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > Objective-C编程 >
  • 限制并发线程数例程c#

制作者:剑锋冷月 单位:无忧统计网,www.51stat.net
  按自己的想法实现的C#版本的限制并发线程数的例程,给有需要的读者
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
  
namespace WZDM.Test
{
  /// <summary>
  /// 限制并发线程数例程
  /// </summary>
  public class TestThread
  {
    int _currentThreads = 0;
    int _maxThreads = 10;
  
    public void Test()
    {
      while (true)
      {
        //_maxThreads = new Random().Next(1, 10);
        for (int i=0; i<100; i++)
        {
          // 在此进行数量限制
          if (_currentThreads >= _maxThreads)
            break;
  
          // 开启线程
          lock (typeof(TestThread))
          {
            _currentThreads++;
            if (_currentThreads > _maxThreads)
              _currentThreads = _maxThreads;
  
            string currentInfo = string.Format("thread {0}/{1}", _currentThreads, _maxThreads);
            Console.WriteLine(currentInfo + " start");
            Thread thread = new Thread(new ParameterizedThreadStart(Run));
            thread.Start(currentInfo);
          }
        }
  
        System.Threading.Thread.Sleep(2000);
      }
    }
  
    // 线程任务
    void Run(object obj)
    {
      for (int i = 0; i < 100; i++)
      {
        Console.WriteLine("{0}:{1}", obj, i);
        Thread.Sleep(100);
      }
      Console.WriteLine("{0} finished", obj);
  
      lock (typeof(TestThread))
      {
        _currentThreads--;
        if (_currentThreads < 0)
          _currentThreads = 0;
      }
    }
  }
}
 


相关教程