• 限制并发线程数例程(C#)


    按自己的想法实现的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;
                }
            }
        }
    }

  • 相关阅读:
    在MFC中使用一个单独的类实现数据在各个类之间的传递
    在MFC中实现对象之间数据的传递。
    extern,头文件和ifndif宏
    在MFC下如何定义全局变量和全局函数
    语言当中一些经常看到 却又迷糊的修饰符
    C++基础之头文件和源文件的关系
    如何使用别人的代码 (特指在MFC里面 或者推广为C++里面)
    DataGird 相关
    在MFC里面使用ADO访问微软的ACCESS数据库 实现增删改查
    Invert Binary Tree
  • 原文地址:https://www.cnblogs.com/surfsky/p/1353437.html
Copyright © 2020-2023  润新知