【发布时间】:2019-06-06 04:01:31
【问题描述】:
我正在创建运行 parrarel 一些功能的应用程序,在 main 方法开始时,我尝试获取当前线程并更改其优先级。我不确定 Parrarel.For 是否正在创建新的 Threads/Tasks。
Parallel.For(0,50,(i) =>
{
Guesser guesser = new Guesser();
guesser.startBruteForce();
});
它只运行我的类的 9 个实例(通过 contructor 中的控制台打印检查),并且在几秒钟后创建下一个对象。我想将主线程优先级(如果是线程)更改为更高将阻止调度程序占用资源来创建新对象。
【问题讨论】:
-
好吧,我真的不明白你想要做什么。你的解释我不清楚。所以我将把自己限制在你问题的标题上:检查
System.Threading.Thread类型的文档。它具有获取当前线程以及更改线程优先级的属性/方法... -
我想获取主线程的句柄,将其优先级设置为更高。
-
如我所说,查看
System.Threading.Thread的文档。如果您不愿意阅读/浏览/搜索/重新访问文档,那么作为程序员,您对自己没有任何帮助;-) -
所以你是说
Parallel.For创建了太多线程?通过限制其他线程的资源,您的目标是什么? -
您几乎肯定在要求
Thread.CurrentThread。考虑 ParallelOptions.MaxDegreeOfParallelism 属性,您可以将其设置为比 Environment.ProcessorCount 低 1,这样主线程就不必与并行线程竞争。
标签: c# .net multithreading