Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby/lib/time.rb的线程安全性如何?_Ruby_Datetime_Thread Safety_Global Variables_Standard Library - Fatal编程技术网

Ruby/lib/time.rb的线程安全性如何?

Ruby/lib/time.rb的线程安全性如何?,ruby,datetime,thread-safety,global-variables,standard-library,Ruby,Datetime,Thread Safety,Global Variables,Standard Library,在查看RSS stdlib monkey修补时间类时,我发现全局变量$1$2$3。。。在那里被大量使用。好吧,我可以不同时制作几个RSS提要而生活 但我在这里发现了同样的恐怖: -/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/Ruby/2.0.0//time.rb 这里: - Ruby/lib/time.rb如何在没有线程错误的情况下工作 $1、$2等是特殊的全局变量,它们保存正则表达式匹配结果,并且在内部是一个变量

在查看RSS stdlib monkey修补时间类时,我发现全局变量
$1
$2
$3
。。。在那里被大量使用。好吧,我可以不同时制作几个RSS提要而生活

但我在这里发现了同样的恐怖:
-/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/Ruby/2.0.0//time.rb
这里:
-


Ruby
/lib/time.rb
如何在没有线程错误的情况下工作

$1
$2
等是特殊的全局变量,它们保存正则表达式匹配结果,并且在内部是一个变量,因此,使用它们的代码是线程安全的

这是一段摘自

特殊全局变量 模式匹配设置一些全局变量:

  • $~相当于::last_匹配
  • $&包含完整的匹配文本
  • $`在匹配之前包含字符串
  • $包含匹配后的字符串
  • $1、$2等包含文本匹配第一、第二等捕获组
  • $+包含最后一个捕获组
这些全局变量是线程局部变量和方法局部变量。

示例如下:

Thread.new {
  "A B C".match(/(\w)/)
  p $1 # Prints "A"

  Thread.new {
    "X Y Z".match(/(\w)/)
    p $1  # Prints X
  }.join

  p $1 # Prints "A", shows that $1 was not corrupted by inner thread

}.join