ActiveScaffold 线程安全性

25

多个来源声称ActiveScaffold不是线程安全的:

从这些信息中可以得出结论,控制器级别的配置更改和授权不是线程安全的。如果应用程序不使用ActiveScaffold的这些组件,是否安全地认为该应用程序是线程安全的?ActiveScaffold中还有其他哪些功能不是线程安全的?

1个回答

11

很不幸,关于这个问题的官方文档并不多,但是有两个开发人员的有用引用可能会对您有所帮助。首先,在这个线程中2010年,一位开发人员说:

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

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

这表明最初的意图是没有线程安全性。然而,它正在进行开发。

此后,有关此事的讨论似乎已经变得安静,我找不到任何进一步的官方声明。但是评论最近版本的人们说,唯一的线程问题是必须将对active_scaffold_config的更改放置在某种锁内才能安全,而系统的其余部分现在应该是线程安全的。

请注意,我找不到官方文档来证明这一点,这仅基于已阅读代码库的用户的评论,因此我不能保证始终如此,但考虑到开发人员说不会再添加非线程化代码,这可能是一个安全的选择。

最后,请注意此线程表明代码库现在几乎是线程安全的,只要您采取一些预防措施并在一些地方使用解决方法,就可以使用线程。

很抱歉我在这里没有更权威的答案,关于这个问题的文档很少,阅读代码难以确定任何一种情况,但这是我能得到的最接近确定的答案(至少有人已经成功将其用于生产中)。


1
感谢您的回答,并祝贺您获得了悬赏奖励 :) - David Thomas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接