• 限制并发线程数例程(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;
                }
            }
        }
    }

  • 相关阅读:
    The user specified as a definer (”@’%') does not exist解决方法
    mongodb下载地址
    镜像系统,超好用
    部署mysql后,无法设置用户远程登陆(%只所有用户,不可以,只能给指定的ip?)
    Libcap的简介及安装
    GCC命令基础
    gcc安装(centos)
    React Native 踩坑
    webpack 和 babel
    React 开发笔记
  • 原文地址:https://www.cnblogs.com/surfsky/p/1353437.html
Copyright © 2020-2023  润新知