我已经编写了一些(c# 3.5)批处理代码,可以选择覆盖线程池 maxthreads。它使用了一些非线程安全的相当重的资源,需要为每个活动线程维护一个“资源池”并使用一个项目。消费应用程序可以设置批处理器将使用多少线程的限制,这反过来又调用ThreadPool.SetMaxThreads()
. 我这样做是为了测试手动设置限制是否比保留默认设置具有更好的性能。
我的问题是,每次使用批处理代码后,我是否应该将 maxthreads 重置回应用程序的先前值?它会在一天中间歇性地被调用,可能会被调用数千次。MaxThreads 限制会一直持续到应用程序重新启动/设置为不同的值,还是会自动重置?
虽然这在我的测试工具中并不是一个真正的问题,但我想知道我是否应该更新代码以在批处理完成后处理其他资源以在生产环境中使用时“重置”线程池。仅将其覆盖是否有任何影响?
最后,在一个 .net 应用程序中设置线程池是为盒子上的所有应用程序设置它,还是只为该单个应用程序的上下文设置它?