NHibernate セッションをスレッドごとに構成できた場合、スレッド プールからのスレッドでデータを処理するときに機能しますか?
プールからのスレッドは「リサイクル」されます (はい?) ため、スレッドがすでに一度使用されていて、それが再び呼び出された場合、そのセッションは単独で使用できなくなりますか?
NHibernate セッションをスレッドごとに構成できた場合、スレッド プールからのスレッドでデータを処理するときに機能しますか?
プールからのスレッドは「リサイクル」されます (はい?) ため、スレッドがすでに一度使用されていて、それが再び呼び出された場合、そのセッションは単独で使用できなくなりますか?
の正しい取り扱いISession
は完全にあなたの手の中にあり、あなたは責任があります。ThreadPool ではありません。そのため、スレッドごとにセッション インスタンスを使用する場合でも、それがいつ作成され、明示的に閉じられて破棄されるかを把握 (および管理) する必要があります。
そのISession
管理が整っていれば、スレッド プールの問題について心配する必要はありません。一方、セッションを開いて[ThreadStatic]
フィールドに保持することは正しくないことも意味します。
短い抜粋:
スレッド プール (設計による) は、呼び出し間でスレッドを有効に保ちます。これは、QueueUserWorkItem への呼び出し間で ThreadStatic 変数が保持されることを意味します。