Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.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_Ruby_File Io - Fatal编程技术网

如何处理线程返回Ruby

如何处理线程返回Ruby,ruby,file-io,Ruby,File Io,我有一个ruby脚本,其中我正在解析一个大的csv文件。除了如何处理线程的返回值之外,我已经处理好了所有的事情,并且工作得相当好。我有: length = (ses.size/4).ceil ses.each_slice(length) do |x| threads << Thread.new { a,b = splat x } end threads.each { |thr| thr.join } length=(ses.size/4).ceil ses.每个|

我有一个ruby脚本,其中我正在解析一个大的csv文件。除了如何处理线程的返回值之外,我已经处理好了所有的事情,并且工作得相当好。我有:

length = (ses.size/4).ceil
ses.each_slice(length) do |x|
    threads << Thread.new { a,b = splat x }
end

threads.each { |thr|
    thr.join
}
length=(ses.size/4).ceil
ses.每个|u切片(长度)do|x|

线程两件事,首先,当您将“x”传递到线程中时,通过更改以下内容使其成为本地线程更安全:

threads << Thread.new { a,b = splat x }
把它抄下来,它会把你带到你想去的地方

threads << Thread.new(x) { |x| a,b = splat x }
dummy = [
  ['a.txt', 'b.txt'],
  ['c.txt', 'd.txt'],
  ['e.txt', 'f.txt'],
  ['g.txt', 'h.txt'],
  ['i.txt', 'j.txt'],
  ['k.txt', 'l.txt']
]

threads = dummy.map do |pair|
  Thread.new(pair) { |val| val }
end

vals = threads.map(&:value) # equiv. to 'threads.map { |t| t.value }'
puts vals.inspect