Q
紅寶石線程塊?
2
A
回答
2
假設你正在使用CRuby,只有一個線程在同一時間運行。但是,這些請求將並行執行,因爲每個線程在其IO未完成時將被阻塞在其IO上。所以如果你這樣做:
require 'open-uri'
threads = 10.times.map do
Thread.new do
open('http://example.com').read.length
end
end
threads.map &:join
puts threads.map &:value
它會比按順序做得快。
此外,您可以檢查線程完成時是否完成W/O阻塞。
例如:
require 'open-uri'
thread = Thread.new do
sleep 10
open('http://example.com').read.length
end
puts 'still running' until thread.join(5)
puts thread.value
隨着CRuby,該線程不能在同一時間運行,但它們仍然是有用的。其他一些實現,如JRuby,具有真正的線程並且可以並行運行多個線程。
一些很好的參考:
1
所有線程同時運行,但IO將被阻塞,直到他們全部完成。
換句話說,線程並不能給你「背景」過程的能力。解釋器將在發送更多消息之前等待所有線程完成。
這很好,如果您考慮一下,因爲如果下一個進程使用線程正在修改/使用的數據,您不必擔心它們是否完整。
如果你想後臺進程結賬delayed_job
相關問題
- 1. 線程塊紅寶石主線程1.9
- 2. Watir的紅寶石線程
- 3. 紅寶石線程同步
- 4. 多線程紅寶石
- 5. 紅寶石線程池
- 6. 紅寶石重複線程
- 7. 紅寶石模塊
- 8. 區塊紅寶石
- 9. 紅寶石程序寶石
- 10. 紅寶石傳遞塊塊
- 11. 紅寶石塊和塊
- 12. 抓紅寶石廚師塊
- 13. 紅寶石模塊包括
- 14. 如何腫塊紅寶石
- 15. 紅寶石塊迭代
- 16. 紅寶石 - 塊範圍
- 17. 行爲紅寶石塊
- 18. 紅寶石塊(收益率)
- 19. 檢測模塊紅寶石
- 20. 紅寶石,在if塊
- 21. 如何紅寶石模塊
- 22. 紅寶石:在塊參數
- 23. 紅寶石塊調用
- 24. 紅寶石方法塊
- 25. 紅寶石混淆塊
- 26. 瞭解紅寶石塊
- 27. 紅寶石哈希樹塊
- 28. 紅寶石:模塊問題
- 29. 紅寶石模塊優化
- 30. 紅寶石塊到陣列