在库中使用ThreadPool是否可以接受?

时间:2009-10-17 02:41:22

标签: c# threadpool convention

在库中使用ThreadPool是否可以接受?

因为如果您的库的用户也使用ThreadPool,这显然可能会导致一些令人不快的问题(由于ThreadPool当然是静态类)..

什么是惯例?

3 个答案:

答案 0 :(得分:3)

是的。我认为在库代码中使用ThreadPool是合适的。即使用户可能在外部使用ThreadPool,ThreadPool仍然足以自我调整。

另一方面,作为库开发人员,您应该提供灵活性:用户可以选择使用ThreadPool,特定线程,甚至是第三方线程池实现。

答案 1 :(得分:1)

只要文档记录良好,并且您提供了允许库的用户控制线程池的方法,例如最小/最大线程,也可以选择不使用线程池。

你还应该非常清楚你的库的哪些暴露部分是线程安全的,哪些不是。

答案 2 :(得分:0)

ThreadPool旨在同时由多个组件使用。因此,如果从您的特定库中使用它本身就没有特别的问题。

可能存在的问题是库中的线程行为。必须清楚地记录您的库的线程语义是什么。如何创建和使用这些线程应该是一个实现细节。 ThreadPool本身不应该出现问题,除非它的一个固有属性(COM公寓亲和力,无法取消线程等)为您的API或消费者带来问题。