我有几个相同类的实例。在类的生命周期中,对此类的每个方法调用都应该在同一个线程上执行。但是对于每个实例,我都需要一个不同的线程。我想过Threadpool,但似乎我对它的控制太少了。
如何在不使用 ThredPool 的情况下重用线程?
谢谢!马丁
编辑(为什么需要这个):我必须使用 win32 dll 来访问第三方产品的业务逻辑。此 dll 不是为多线程环境(如 Web 应用程序)设计的。当我在 ASP 经典模式(STA 线程)下运行我的 ASP.NET MVC 应用程序时,到目前为止一切正常。但问题是所有用户都会互相阻止。该组件还维护一些状态。一旦不同的线程访问此组件,它就无法识别我必须为每个方法调用传递的连接句柄。登录过程后我得到了连接句柄。我想再次将我的 Web 应用程序置于 MTA 模式并使用工作者概念,将大约 10 个用户分配给一个工作者(最多 10 个用户应该互相阻止)。一名工作人员应该始终使用同一个线程来执行 api 调用,这样组件就不会发生故障。我'
更新 - 找到解决方案: 感谢 Ami Bar 的“智能线程池”,我可以(轻松)完成我正在寻找的行为。对于每个工作人员,我现在拥有自己的线程池实例,其中一个线程的最大和最小数量。好吧,这不是线程池的想法,但它使处理工作项变得非常容易,而且它还有一些不错的其他功能。Web 应用程序现在正在 MTA 上运行。我将准备一些负载测试,看看它在几个小时内是否稳定。见这里: http: //www.codeproject.com/Articles/7933/Smart-Thread-Pool