我可以使用.net ThreadPool设置多线程环境,并且确实可以获得显着的性能优势。这在我的应用程序的后台运行。.net 4.0 c#:暂停/恢复线程池中的并行运行线程暂时?
现在,当用户请求新任务时,我希望它获得最大的CPU资源以最大限度地提高性能。因此,我想暂时暂停我开始的所有线程(通过ThreadPool.Queueuserworkitem方法),然后在用户在前台请求的新任务完成后恢复。
可能有几种解决方案来解决我的问题:
a。启动较少的后台线程,以便任何新的用户请求获得一定份额的CPU资源。 (但我失去的性能增益我有:()
b。对于螺纹为新用户请求的任务设置更高的优先级。(不知道这是否正常工作?)
角挂起/恢复线程池线程我开始但是暂停/恢复/中断线程强烈劝阻此外,这可能变得棘手,而且容易出错
任何其他的想法
注意:?当用户发出请求时,执行任务会通常不会超过300毫秒,但是当我在后台启动ThreadPool线程时,现在需要大约3秒完成(10倍差)!如果需要500-800ms,我可以。所有后台线程在大约8秒钟内完成(如果他们需要1-2秒多,我还可以)。因此,我现在正在尝试选项(a)。
在此先感谢!
只需使用一个线程,而不是线程池。 –