タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

tipsとdrubyに関するsecondlifeのブックマーク (2)

  • 全てのDRbObjectにpingしちゃう - @m_seki の

    分散GCのかなりいいかげんな実装の提案*1。 定期的に自分が知っているDRbObjectにメソッド(respond_to?)を投げる係を置くですよ。 require 'drb/drb' require 'thread' class DRbPing def initialize(timeout=300) @timeout = timeout @queue = Queue.new @keeper = keeper @knocker = knocker end def keeper Thread.new do loop do en_q sleep(@timeout) end end end def knocker Thread.new do loop do begin @queue.pop.respond_to? :to_a rescue end end end end def en_q Obj

    全てのDRbObjectにpingしちゃう - @m_seki の
  • 1プロセスで複数のDRbServer - @m_seki の

    dRuby で 1プロセスで複数サービスの提供 こっちが題だったか。 DRb::DRbServerをnewすれば一つのプロセスで複数のDRbServerを持てます。それぞれに待ち受けスレッドが生成されます。 サーバがリモートからのメソッドを処理するコンテキスト内(スレッド内)でDRbObjectを生成するとき、そのメソッドを担当しているDRbServerへの参照が生成されます。あるコンテキストにおいて、そのきっかけとなったリモートからの呼び出しを受け付けたDRbServerがカレントサーバです。きっかけがリモートからの呼び出しでない場合には、プライマリサーバがカレントサーバとなります。プライマリサーバは一番最初に生成されたDRbServer、あるいはDRb.start_serviceで生成したDRbServerです。 こういうことは通常は意識しなくて良いように設計されていますが、こういう

    1プロセスで複数のDRbServer - @m_seki の
  • 1