【发布时间】:2013-09-29 06:09:26
【问题描述】:
我有一个查看数据库表、提取记录并发送电子邮件的过程。在一天/一个月的不同时间,这个过程可以得到很好的备份,目前我们有 30 个 Windows 服务实例正在运行以满足需求。
我们尝试创建单个实例,并为每个实例启动 6 个长时间运行的 TPL 任务,但这是静态的,无法很好地扩展。
我想做的是查看要处理的表,计算请求的数量,并将线程添加到池中,直到指定的上限,比如 NumProcessors * 10。当需求回落时, 将这些线程从池中拉出,因为每个线程每 2 秒就访问一次数据库,我更希望每个实例有 6 个线程而不是 60 个线程。
添加线程非常简单,但我很难想出一种在需求下降时优雅地从池中拉出线程的方法。
【问题讨论】:
标签: c# multithreading task-parallel-library .net-4.5