为了加快我的资源匮乏的应用程序的启动,我将各种启动任务移到了后台线程,并用“Thread.Priority = Lowest”标记了这些线程。

但是,这些低优先级线程仍会与应用程序并行执行(因为它加载了UI),这在ANTS Profiler的时间轴中得到了证明。我的理解是,最低表示CPU将首先处理所有优先级更高的线程,然后再处理优先级较低的线程。

我的理解有缺陷吗?

最佳答案

线程可能以最低的优先级进行调度,但是它们不会在行尾等待。他们可能仍将获得足够的CPU时间片,以吞噬某些真正的瓶颈资源,例如硬盘驱动器访问。实际上,这完全取决于您在做什么。

初始化计算密集吗?或网络密集型/硬盘密集型。当不同的任务使用不同的资源时,或者允许在不阻塞其他操作的情况下运行计算密集型操作,多线程方法将是最有效的。

单线程方法可以切实地对任务进行排序,以使应用程序看起来加载得更快,而多线程方法可能意味着每个人都可以同时参与进来,甚至有可能互相妨碍。

关于c# - 设置Thread.Priority = Lowest到底意味着什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2204210/

10-09 06:22