在一个库中使用线程池是否可行?

5

在库中使用ThreadPool是否可行?

因为这显然可能会导致一些不愉快的问题,如果库的用户也在使用ThreadPool(当然是因为ThreadPool是静态类)。

有什么约定吗?

3个回答

3

是的。我认为在库代码中利用线程池是合适的。即使用户可能在外部使用线程池,线程池仍然足够好以调整自身。

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


1

是的。

只要它有良好的文档,并提供允许库的用户控制线程池的方法,例如最小/最大线程以及可能选择不使用线程池的选项。

您还应该清楚地表明哪些暴露的库部分是线程安全的,哪些不是。


0

ThreadPool旨在同时被多个组件使用。因此,如果从您的特定库中使用它本身并不会出现任何特殊问题。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接