2009-10-17 27 views
5

ライブラリにThreadPoolを使用することは可能ですか?ライブラリでThreadPoolを使用することは可能ですか?

あなたのライブラリーの利用者は、(当然の静的クラスであることに起因ThreadPoolに)だけでなくThreadPoolを使用している場合には、明らかに、いくつかの不快な問題を引き起こす可能性があるため。..

大会は何ですか?

答えて

3

はい。ライブラリコードでThreadPoolを使用するのが適切だと思います。ユーザーがThreadPoolを外部で使用しても、ThreadPoolはまだそれ自身を調整するのに十分です。

一方、ライブラリ開発者は、柔軟性を提供する必要があります。ユーザーは、ThreadPool、特定のスレッド、またはサードパーティのスレッドプール実装を使用することを選択できます。

1

はい。

よく書かれている限り、ライブラリのユーザーがスレッドプールを制御する方法を提供します(最小/最大スレッドなど)。スレッドプールをまったく使用しないオプションもあります。

非常には、ライブラリのどの部分がスレッドセーフで、どの部分がスレッドセーフであるかを明確にする必要があります。

0

ThreadPoolは、複数のコンポーネントで同時に使用するように設計されています。したがって、あなたの特定のライブラリから使用される場合、それ自体は特に問題はありません。

問題は、ライブラリ内の一般的なスレッド動作です。ライブラリのスレッドセマンティクスが何であるかを明確に文書化しなければなりません。これらのスレッドがどのように作成されて使用されるかは、実装の詳細でなければなりません。 ThreadPool自体に固有のプロパティ(COMアパートメントのアフィニティ、スレッドをキャンセルできないなど)がAPIまたはコンシューマに問題を生じさせない限り、ThreadPool自体は問題を提示するべきではありません。

関連する問題