ruby druby在同一个脚本文件中(原始资料,甚至缺少互斥体等)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ruby druby在同一个脚本文件中(原始资料,甚至缺少互斥体等)相关的知识,希望对你有一定的参考价值。

require 'drb/drb'

main_pid = Process.pid

f_proc_id = fork do
  puts "Started server fork with pid: #{Process.pid}, gpid: #{Process.getpgid(main_pid)}"

  class Front
    def initialize
      @global = [1,2,3,4]
    end

    def pop
      @global.pop
    end
  end

  f = Front.new
  DRb.start_service 'drbunix:/tmp/drb000', f
  DRb.thread.join
end

puts 'preparing to fork'
until File.exist? '/tmp/drb000'
  sleep 1
end
puts 'server ready'

pids = []
(1..3).each do

  pids << fork do
    puts "Hello from fork pid: #{Process.pid}"
    r = DRbObject.new_with_uri 'drbunix:/tmp/drb000'
    puts r.pop
  end

end

# hold your breath until all children finish
until pids.all? { |p|
  !system("ps --no-headers -p #{p} > /dev/null 2>&1") ||
      system("ps --no-headers -p #{p} | grep defunct> /dev/null 2>&1")
}
  sleep 1
end

puts 'shutting down main fork'
Process.kill 'HUP', f_proc_id

puts 'done'

以上是关于ruby druby在同一个脚本文件中(原始资料,甚至缺少互斥体等)的主要内容,如果未能解决你的问题,请参考以下文章

ruby dRuby示例为什么每个资源需要一个互斥锁

IIS7 上配置运行 Ruby CGI环境

Ruby on Rails 在带有静态脚本文件的视图中渲染

如何在 Ruby 中复制哈希?

Ruby 脚本内的 Ruby 就地编辑

如何在 Ruby 脚本中为命令 shell 获取环境变量?