多个源声称ActiveScaffold不是线程安全的:
由此,我收集到控制器级别的配置更改和授权并不是线程安全的。如果不使用ActiveScaffold的这些组件,那么考虑应用程序线程安全是否安全?ActiveScaffold中还有其他不安全的特性吗?
发布于 2014-08-08 09:36:30
不幸的是,在这个问题上没有太多的正式文档,但是开发人员有两个有用的引语,它们可能会在这里帮助您。首先,开发人员在2010年,这条线上声明:
在控制器中,使用marked_records。标记的记录存储在会话中,因此只能从控制器访问它们。模型方法是从当前控制器获取模型方法的黑客,但它使用的是不安全的类变量。 ActiveScaffold不是线程安全的自动取款机,但是我以后会修复当前的非线程安全代码,我不想添加更多的非线程安全代码。如果需要模型方法,我将使用线程变量添加它们。
这表明最初的意图是不存在线程安全。然而,它正在发展之中。
在这一点之后,关于这个问题的讨论似乎变得平静了,我找不到任何进一步的正式声明。然而,评论最新版本的人说,唯一的线程问题是,为了安全起见,对active_scaffold_config的更改必须放在某种锁中,而系统的其余部分现在应该是线程安全。
请注意,我找不到官方文档来证明这一点,它只是基于已经阅读了代码库的用户的评论,所以我不会保证总是这样,但是考虑到开发人员的评论说不会增加更多的非线程代码,这可能是一个安全的选择。
最后,注意这条线,它暗示代码库现在几乎是线程安全的,只要您采取一些预防措施并在几个地方使用变通方法,就可以使用线程。
很抱歉,在这里我没有一个更权威的答案,这方面的文档很少,而且阅读代码也很难确定,但这是我最能确定的(似乎人们已经成功地在生产中成功地使用了线程)。
https://stackoverflow.com/questions/18392769
复制相似问题