私はURLの配列を持っていて、それぞれを開き、特定のタグをフェッチすることはできません。
しかし、これを並行して実行したいと思います。ここでルビーでの並列HTTPリクエスト
は、私が何をしたいのための擬似コードです:
urls = [...] tags = [] urls.each do |url| fetch_tag_asynchronously(url) do |tag| tags << tag end end wait_for_all_requests_to_finish()
これは素晴らしいだろう素敵で安全な方法で行うことができれば。
スレッドを使用することはできますが、配列はルビーのスレッドセーフではありません。あなたはMutex
を使用して、スレッドの安全性を達成することができます
ハハ、これは私が書いた全く同じ解決策でした! :) –
仕事の大部分がIOの場合、コアの数は本当に重要ではありませんか? – ben
@ben:そうです。それでも、同時にスレッドとオープンな接続が多すぎると、生産性が低下する可能性があります。 FirefoxはHTTPパイプライニングでデフォルトの8接続を使用しているので、これを推奨値(5ではなく)として使用します。 –