zoukankan      html  css  js  c++  java
  • TPL中限制进程数量

    The MaxDegreeOfParallelism sets the maximum number of simultaneous threads that will be used for the Parallel.For(). It does not mean that only two threads will ever be used.

    Different threads can be allocated from the threadpool during execution of the Parallel.For(), since threadpool threads are specifically designed to be reused.

    The following program demonstrates. If you run it, you'll see that the total number of different threads being used can exceed 2, but the total number of threads being used simultaneously never exceeds 2.

    using System;
    using System.Collections.Concurrent;
    using System.Threading;
    using System.Threading.Tasks;
    
    namespace ConsoleApp1
    {
        class Program
        {
            static void Main()
            {
                ParallelOptions po = new ParallelOptions
                {
                    MaxDegreeOfParallelism = 2
                };
    
                var activeThreads = new ConcurrentDictionary<int, bool>();
    
                Parallel.For(0, 100, po, x =>
                {
                    activeThreads[Thread.CurrentThread.ManagedThreadId] = true;
                    Console.WriteLine("Active threads: " + string.Join(", ", activeThreads.Keys));
                    Thread.Sleep(200);
                    activeThreads.TryRemove(Thread.CurrentThread.ManagedThreadId, out bool unused);
                });
    
                Console.ReadLine();
            }
        }
    }
  • 相关阅读:
    继承
    面向对象
    数据库的数据操作
    数据库数据类型以及建库语句
    第一天
    继承与多态
    C#面向对象——对象成员、方法重载、引用类库等
    C#面向对象初步
    SQL2008知识回顾
    C#知识回顾
  • 原文地址:https://www.cnblogs.com/zeroone/p/6770623.html
Copyright © 2011-2022 走看看