昨日の続き。更新ping全体ではなく、ひとつひとつのXML-RPCをスレッドにしてみました。

    thread_list = Array.new
    ping_uris.each do |ping_uri|
      uri = URI.parse(ping_uri)
      thread_list << Thread.new(uri) do |u|
          connection = XMLRPC::Client.new(u.host, u.path, u.port)
          connection.call('weblogUpdates.ping', name, url)
       end
    end
    thread_list.each {|t| t.join}

うーん、これならたしかに並列処理できるけど、結局は待たなきゃいけないんだな。更新ping処理全体を子プロセスとかにしたほうがいいかも。