我正在创建一个运行一些功能的应用程序,以主要方法开始时,我尝试获取当前线程并更改其优先级。我不确定Parrarel。For正在创建新的线程/任务。
Parallel.For(0,50,(i) =>
{
Guesser guesser = new Guesser();
guesser.startBruteForce();
});
它仅运行我班上的9种实例(在contructor中通过控制台打印进行检查),然后在几秒钟后创建下一个对象。我想将主线程优先级(如果是线程)更改为更高将阻止调度程序占用资源来创建新对象。
答案 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++;
}
}