多个来源声称ActiveScaffold不是线程安全的:
从那些我收集的控制器级别配置更改和授权不是线程安全的。如果应用程序不使用ActiveScaffold的那些组件,是否可以安全地考虑应用程序线程安全? ActiveScaffold中是否还有其他非线程安全的功能?
答案 0 :(得分:10)
不幸的是,关于这个问题的官方文档没有太多的方法,但开发人员有两个有用的引用可能对你有所帮助。首先,in 2010, here on this thread开发人员说:
在控制器中,使用marked_records。标记的记录存储在会话中, 所以只能从控制器访问它们。模型方法是一种破解 从当前控制器获取模型方法,但它使用的是类 非线程安全的变量。
ActiveScaffold不是线程安全的ATM,但我会修复当前的非线程安全 代码稍后我不想添加更多非线程安全代码。如果是模型方法 我需要使用线程变量添加它们
这表明最初的意图是没有线程安全性。然而它正在开发中。
在此之后关于此事的讨论似乎变得安静,我找不到任何进一步的官方声明。然而,评论重新发布版本的人说,唯一的线程问题是对active_scaffold_config的更改必须放在某种锁中才能保证安全,并且系统的其余部分现在应该是线程安全的。
要注意,我找不到官方文档来证明这一点,它只是基于读过代码库的用户的评论,所以我不保证这总是如此,但考虑到开发人员的评论不会再添加非线程代码,这可能是一个安全的赌注。
最后,注意this thread这意味着代码库现在几乎是线程安全的,只要你采取一些预防措施并在一些地方使用变通方法就可以使用线程。
对不起,我这里没有更权威的答案,关于这方面的文档很少,阅读代码很难确定,但这是最接近确定我能得到的(似乎人们已经取得了成功)至少在生产中使用它与线程。)