0

我正在尝试从子外壳填充数组。这可能吗?

array = []
processes = []
limit = 10

File.foreach("/path/to/file") do |line|
  if processes.size == limit
    processes.delete Process.wait
  end

  processes << fork do
    begin
      something = so_something
      if something == something
        array.push(line)
      end
    end
  end
end
Process.waitall

如果我这样做,则数组在 Process.waitall 之后显示为空。我想稍后引用该数组。

4

1 回答 1

1

当你 fork 一个进程时,它的内存被复制并且现在完全独立于父进程。如果您想将一些数据传递回父级,则使用一些 IPC(进程间通信)机制(管道、套接字等)

也许,您不想分叉,而是想创建一个线程?线程可以更新共享状态(这正是编写多线程程序困难的原因)。

于 2012-10-20T15:57:12.453 回答