Threads sind "`Prozesse im Prozess"', voneinander relativ unabhängige
Handlungsstränge, die innerhalb eines gemeinsamen Rahmenprozesses
ablaufen. Neue Threads werden durch Thread.new erstellt.
Der nachfolgende Block wird von dem neuen Thread asynchron ausgeführt.
require 'net/http'
url1="www.approximity.com"
url2="www.ruby.ch"
def getPage(url)
h = Net::HTTP.new(url, 80)
puts "Hole: #{url}"
resp, data = h.get('/', nil )
puts "Habe #{url}: #{resp.message}"
end
thread1=Thread.new { getPage(url1) }
thread2=Thread.new { getPage(url2) }
thread1.join
thread2.join
In diesem Beispiel werden zwei zusätzliche Threads erzeugt.
Mit thread1.join blendet sich der Hauptstrang aus der
Abarbeitung aus, bis thread1 beendet ist. Sollte thread2
dann noch laufen, wird gewartet, bis auch dieser beendet ist.
Diese Anweisungen sind nötig, da mit dem Ende des Hauptthreads
automatisch alle übrigen Threads der Applikation abgeschlossen werden.