【发布时间】:2013-01-17 01:46:09
【问题描述】:
如果我设法将 NHibernate 会话配置为每个线程,当我处理来自线程池的线程中的数据时,这会起作用吗?
池中的线程被“回收”(是吗?)所以如果一个线程已经被使用过一次并且它再次被调用,那么它的会话会不会单独可用?
【问题讨论】:
标签: nhibernate session threadpool
如果我设法将 NHibernate 会话配置为每个线程,当我处理来自线程池的线程中的数据时,这会起作用吗?
池中的线程被“回收”(是吗?)所以如果一个线程已经被使用过一次并且它再次被调用,那么它的会话会不会单独可用?
【问题讨论】:
标签: nhibernate session threadpool
ISession 的正确处理完全掌握在您手中,您有责任。不是线程池。因此,如果您在每个线程中使用会话实例,您仍然应该知道(并管理)它何时被创建,并且它被明确关闭和处置。
如果ISession 管理到位,则不必担心线程池问题。另一方面,这也意味着,在[ThreadStatic] 字段中打开和保持会话是不正确的:
简短摘录:
线程池(通过设计)使线程在调用之间保持活动状态。 这意味着 ThreadStatic 变量将在调用之间持续存在 到 QueueUserWorkItem。
【讨论】: