24

Multiple sources claim ActiveScaffold isn't thread safe:

From those I gather controller level configuration changes and authorization aren't thread-safe. Is it safe to consider an application thread-safe if it doesn't use those components of ActiveScaffold? Are there any other features in ActiveScaffold that aren't thread-safe?

4

1 回答 1

10

不幸的是,关于这个问题的官方文档并不多,但是有两个来自开发人员的有用引用可以帮助你。首先,在 2010 年,一位开发人员在此线程中表示:

在控制器中,使用marked_records。标记的记录存储在会话中,因此只能从控制器访问。模型方法是从当前控制器获取模型方法的一种方法,但它使用的类变量不是线程安全的。

ActiveScaffold 不是线程安全的 ATM,但我稍后会修复当前的非线程安全代码,我不想添加更多的非线程安全代码。如果需要模型方法,我将使用线程变量添加它们

这表明最初的意图是不存在线程安全。然而它正在开发中。

在此之后,关于此事的讨论似乎变得平静,我找不到任何进一步的官方声明。然而,评论新版本的人说,唯一的线程问题是对 active_scaffold_config 的更改必须放在某种锁内以确保安全,并且系统的其余部分现在应该是线程安全的。

请注意,我找不到官方文档来证明这一点,它仅基于已阅读代码库的用户的评论,所以我不能保证总是如此,但鉴于开发人员的评论说不再是-线程代码将被添加,这可能是一个安全的选择。

最后,请注意这个线程,这意味着代码库现在几乎是线程安全的,只要您采取一些预防措施并在几个地方使用变通方法,就可以使用线程。

对不起,我在这里没有更权威的答案,这方面的文档很少,阅读代码很难确定,但这是我能得到的最接近的确定(似乎人们已经成功使用它至少在生产中使用线程)。

于 2014-08-08T09:36:30.407 回答