我正在使用 Ruby on Rails 3.0.7,我想知道何时以及为什么应该使用类 (@@
) 和全局 ($
) 变量,以及如果在 this case那些被正确使用。
P.S.:我问这个问题是因为我有 mentioned case-problem并在一个答案中建议使用类变量。如果在那种情况下使用它很好,我很感激你能解释我。
最佳答案
简短的回答是:从不。
我是 ruby 的新手,但我确实从其他语言中了解到这一点:全局变量从不是线程安全的。
沿着同样的思路,避免像瘟疫一样的单例模式,除非你只处理一个唯一的线程。
编辑:
顺便说一句,谷歌搜索 ruby 依赖注入(inject)表明 Ruby 不需要任何它。好吧,告诉你什么。确实如此。
因为人们总是假设它不存在,所以有堆积如山的 gem 和图书馆以及不存在的东西。他们基本上假设您只有一个线程和 IO 阻塞。如果他们从一开始就没有这样做,他们可能是线程安全和非阻塞的。但目前,它们不是。
如果他们这样做了,他们也会更好地使用事件驱动服务器。
就目前情况而言,这是一团糟。
Event Machine 不是线程安全的。 Thin 和 Goliath 不是同一回事。机架异步基本上是猴子修补整个事情。 Passenger 使用 fork 并且只有在你安装带 rails 的 REE/1.8.7 时才聪明。 Mongrel 是线程安全的但 IO 阻塞。 Webrick 是单线程和 IO 阻塞的。 list 还在继续。太乱了。
关于ruby-on-rails - 何时以及为何应使用类和全局变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6566029/