【问题标题】:Does background thread run on lower priority than foreground thread?后台线程是否以低于前台线程的优先级运行?
【发布时间】:2023-03-09 15:54:01
【问题描述】:

后台线程是否以低于前台线程的优先级运行,即使它们的Thread.Priority 设置为相同的值?

考虑下面的代码:-

Thread threadFG = new Thread(MyMethod);//foreground thread

Thread threadBG = new Thread(MyMethod);//background thread
threadBG.IsBackground = true;

性能会有差异吗?请注意,我对两个线程都使用了默认优先级。

包括 MSDN 在内的很多网络文章都说后台线程会在应用程序退出时自动销毁,而前台线程不是这种情况。 StackOverflow 上的很多问题都这么说。但我没有找到谈论两者之间性能差异的资源。

仅仅因为后台线程,那个线程会比前台线程运行得慢吗?

【问题讨论】:

  • Foreground and Background threads:“后台线程与前台线程相同,但有一个例外:后台线程不会保持托管执行环境运行”(我的强调)
  • 您可以通过启动两个线程并检查Thread.Priority 属性来确认@Damien_The_Unbeliever 所说的内容

标签: c# .net multithreading


【解决方案1】:

后台线程是否以低于前台线程的优先级运行,即使它们的Thread.Priority 设置为相同的值?

没有。除非明确指定,否则所有线程都以默认优先级开始,例如Normal

性能会有差异吗?

自己衡量,使用秒表或类似的机制来衡量性能。线程的执行性能取决于很多因素,包括主机的组件(CPU 架构、内核数量等)。

仅仅因为后台线程,那个线程会比前台线程运行得慢吗?

没有。正如@Damien_The_Unbeliever 的MSDN link 解释的那样:前景或背景与性能无关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    • 2014-11-26
    • 2011-01-15
    • 1970-01-01
    • 2011-02-21
    • 1970-01-01
    相关资源
    最近更新 更多