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

プロセスをフォークすると、そのメモリがコピーされ、親から完全に独立します。一部のデータを親に戻したい場合は、IPC(プロセス間通信)メカニズム(パイプ、ソケットなど)を使用します。

たぶん、フォークする代わりに、代わりにスレッドを作成したいですか?スレッドは共有状態を更新できます(これがまさにマルチスレッドプログラムの作成を困難にする理由です)。

于 2012-10-20T15:57:12.453 に答える