如何获取主线程并设置其优先级

时间:2019-06-05 19:09:25

标签: c# .net multithreading

我正在创建一个运行一些功能的应用程序,以主要方法开始时,我尝试获取当前线程并更改其优先级。我不确定Parrarel。For正在创建新的线程/任务

Parallel.For(0,50,(i) =>
{       
   Guesser guesser = new Guesser();
   guesser.startBruteForce();
});

它仅运行我班上的9种实例(在contructor中通过控制台打印进行检查),然后在几秒钟后创建下一个对象。我想将主线程优先级(如果是线程)更改为更高将阻止调度程序占用资源来创建新对象。

1 个答案:

答案 0 :(得分:0)

TPL(任务并行库)是一组类型和API,可为开发人员提供一种简便的方法 在他们的.NET应用程序中增加并行性和并发性。

如果您尝试限制创建的Task的数量,那是没有意义的,因为它是由ThreadPool它自己管理的。

您可以检查以下链接:https://docs.microsoft.com/en-us/dotnet/standard/threading/the-managed-thread-pool

我只添加一些可以测试的代码,然后确认它可以正常工作(下面的代码)。

应用程序控制台:

public readonly static object Locker = new object();

    private static int threadNumber;

    public static int ThreadNumber
    {
        get { return threadNumber; }
        set
        {
            lock(Locker)
            threadNumber = value;
        }
    }


    static void Main(string[] args)
    {


        Parallel.For(0, 50, (i) =>
        {
                Guesser guesser = new Guesser();
                guesser.StartBruteForce(ref threadNumber);
        });

        Console.ReadKey();

    }

类Guesser:

internal class Guesser
{
    internal void StartBruteForce(ref int threadNumber)
    {
        threadNumber++;
    }
}