我正在创建运行并行一些功能的应用程序,在 main 方法开始时,我尝试获取当前线程并更改其优先级。我不确定 Parrarel.For 是否正在创建新的线程/任务。
Parallel.For(0,50,(i) =>
{
Guesser guesser = new Guesser();
guesser.startBruteForce();
});
它只运行我的类的 9 个实例(在构造函数中使用控制台打印检查),并且下一个对象在几秒钟后创建。我想将主线程优先级(如果它是一个线程)更改为更高将阻止调度程序占用资源来创建新对象。
最佳答案
TPL(任务并行库) 是一组类型和 API,为开发人员提供了一种简单的方法 在他们的 .NET 应用程序中添加并行性和并发性。
如果您试图限制创建的 Task
的数量,那是没有意义的,因为它由 ThreadPool
自行管理。
您可以查看此链接:https://learn.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();
}
类猜测器:
internal class Guesser
{
internal void StartBruteForce(ref int threadNumber)
{
threadNumber++;
}
}
关于c# - 如何获取主线程并设置其优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56466626/