next up previous contents index
Search Next: Projekt: Logfile-Analyse Up: Prozesse und Threads Previous: Prozesse (schwergewichtig)   Contents   Index

Threads (leichtfüßig)

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.



(C) 2002 by dpunkt.de, Armin Roehrl, Stefan Schmiedl, Clemens Wyss 2002-01-20