作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
这是我正在查看的代码:
def method_missing(id, *args)
return self.find(Regexp.last_match(1), args[0]) if id.id2name =~ /find_by_(.+)/
raise NoMethodError
end
如果我有多个线程调用 Regexp.last_match
会怎样?
如果我有多个线程使用 method_missing
方法调用对象会怎样?
最佳答案
Ruby 1.9.2 平台文档声明调用 Regexp.last_match
等同于读取特殊的 $~
全局变量。
摘自“The Ruby Programming Language”,第 318 页:“重要的是要记住 $~ 和从它派生的变量都是线程本地和方法本地的。”
所以Regexp.last_match
是线程安全的。至于您在 method_missing
中使用的其他方法,我相信它们也是线程安全的。 (如果有人有不同的看法,请编辑这篇文章。)
关于ruby - Regexp.last_match 线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9004245/
我是一名优秀的程序员,十分优秀!