【发布时间】:2010-09-17 07:29:16
【问题描述】:
我在很多地方都读到过 .net 线程池适用于短时间跨度任务(可能不超过 3 秒)。在所有这些提及中,我没有找到不应该使用它的具体原因。
甚至有人说,如果我们使用长时间的任务会导致糟糕的结果,还会导致死锁。
有人可以用简单的英语解释一下为什么我们不应该将线程池用于长时间跨度的任务吗?
具体来说,我什至想给出一个场景,想知道为什么在这个场景中不应该使用ThreadPool,背后有正当的理由。
场景:我需要处理数千个用户数据。用户的处理数据是从本地数据库中检索的,并使用我需要连接到托管在其他位置的 API 的信息,来自 API 的响应将在处理后存储在本地数据库中。
如果我使用线程限制为 20 的 ThreadPool,是否有人可以解释我在这种情况下的陷阱?每个用户的处理时间可能从 3 秒到 1 分钟(或更多)不等。
【问题讨论】:
标签: c# .net multithreading threadpool