我可以使用 .net ThreadPool 设置多线程环境,并且确实获得了显着的性能优势。这在我的应用程序的后台运行。
现在,当用户请求新任务时,我希望它获得最大的 CPU 资源以最大化性能。因此,我想暂时暂停我开始的所有线程(通过 ThreadPool.Queueuserworkitem 方法),然后在前台用户请求的新任务完成后恢复。
我的问题可能有几种解决方案:
一个。启动较少的后台线程,以便任何新的用户请求都能获得一些 CPU 资源。(但我失去了我所获得的性能提升:()
湾。为新用户请求的任务的线程设置更高的优先级。(不确定这是否有效?)
C。暂停/恢复我开始的 ThreadPool 线程。但是非常不鼓励暂停/恢复/中断线程。此外,这可能会变得棘手且容易出错。
还有其他想法吗?
注意:当用户发出请求时,执行任务通常不会超过 300ms。但是,当我在后台启动 ThreadPool 线程时,现在大约需要 3 秒才能完成(差 10 倍)!不过,如果需要 500-800 毫秒,我可以。所有后台线程在大约 8 秒内完成(如果它们多花 1-2 秒我就可以了)。因此,我现在正在尝试选项 ( a )。
提前致谢!