gpt4 book ai didi

nhibernate - NHibernate SessionFactory 线程安全吗

转载 作者:行者123 更新时间:2023-12-03 20:23:20 26 4
gpt4 key购买 nike

根据文档,SessionFactory 应该是线程安全的:

An ISessionFactory is threadsafe, many threads can access it concurrently and request ISessions.

我正在查看实现,但我无法理解例如OpenSession() 可以是线程安全的:

http://nhibernate.svn.sourceforge.net/viewvc/nhibernate/trunk/nhibernate/src/NHibernate/Impl/SessionFactoryImpl.cs?revision=5233&view=markup

几乎没有调用 lock(),但没有调用 OpenSession()。我能找到的所有无锁线程安全实现基本上都是单例。

最佳答案

OpenSession 只是返回一个新对象并传入来自 SessionFactoryImpl 的字段。这些字段似乎没有在任何地方被修改(禁止构造函数)所以这似乎是线程安全的。先决条件是 settings.CacheProvider.NextTimestamp()sessionLocalInterceptor.SetSession(session); 也是线程安全的,因为它们在一些重载的 OpenSession 调用中可能会发生变化。

至少在 .Dispose/.Close 上有一些竞争条件的空间。

关于nhibernate - NHibernate SessionFactory 线程安全吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4750847/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com