【问题标题】:Changing thread priority of an action更改操作的线程优先级
【发布时间】:2012-03-17 06:01:36
【问题描述】:

我有一个动作,

var act = new Action(() =>
{
   while (true)
   {
     //Some Codes!
   }
 });
 act.BeginInvoke(null, null);

如何提高运行此操作的线程的优先级? 我知道如何在简单的线程中做到这一点。

Thread.CurrentThread.Priority = ThreadPriority.Lowest;

但是一个动作的优先级呢?

【问题讨论】:

  • 不清楚你想做什么。除此之外,不要手动更改线程的优先级,这意义不大。如果你有性能问题,那么看看你是否可以改进代码而不是使用线程优先级,因为行为是未定义的并且可能会有所不同
  • 没有意义,线程什么也没做。
  • 我重写了我的问题,以使其更清楚,因为我的程序有 2 个线程,我想让它们更高!

标签: c# multithreading thread-priority


【解决方案1】:

BeginInvoke 会将您的任务排队到 ThreadPool。您无法控制标准 .NET 线程池的调度。只有在代码实际执行后才能控制线程。

警告: 更改 ThreadPool 线程的优先级被认为是危险的。延伸阅读:.NET: Why not change the priority of a ThreadPool (or Task) thread?

如果你能解释你想要达到的目标,也许你能得到一个更好的解决方案?

【讨论】:

  • 我尝试为人形机器人编写一些代码,女巫有两种不同的动作,一种用于运动控制,一种用于视觉处理。有一段时间因为资源不足而掉线,我认为如果我改变运动线程的优先级,它可能会解决问题!
  • 线程池适用于在资源可用时可以在后台执行的代码。对于需要保证执行的事情,您应该启动一个专用线程来运行它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-14
  • 1970-01-01
  • 1970-01-01
  • 2011-06-25
  • 2010-10-10
  • 2010-10-10
  • 1970-01-01
相关资源
最近更新 更多