在库中使用ThreadPool
是否可行?
因为这显然可能会导致一些不愉快的问题,如果库的用户也在使用ThreadPool
(当然是因为ThreadPool
是静态类)。
有什么约定吗?
在库中使用ThreadPool
是否可行?
因为这显然可能会导致一些不愉快的问题,如果库的用户也在使用ThreadPool
(当然是因为ThreadPool
是静态类)。
有什么约定吗?
是的。我认为在库代码中利用线程池是合适的。即使用户可能在外部使用线程池,线程池仍然足够好以调整自身。
另一方面,作为库开发人员,你应该提供灵活性:用户可以选择使用线程池、特定的线程或甚至第三方线程池实现。
是的。
只要它有良好的文档,并提供允许库的用户控制线程池的方法,例如最小/最大线程以及可能选择不使用线程池的选项。
您还应该清楚地表明哪些暴露的库部分是线程安全的,哪些不是。
ThreadPool旨在同时被多个组件使用。因此,如果从您的特定库中使用它本身并不会出现任何特殊问题。
可能存在问题的是您的库中的线程行为。必须清楚地记录您的库的线程语义。如何创建和使用这些线程应该是实现细节。除非ThreadPool本身的某个固有属性(COM公寓亲和力、无法取消线程等)对您的API或消费者造成问题,否则ThreadPool本身不应该成为问题。