Ruby unterstützt zurzeit nur Interpreter-interne Threads und
keine Threads auf Betriebssystemebene. Bei Prozessen ist es dafür genau
umgekehrt: Hier gibt es keine Ruby-internen Prozesse, sondern nur die,
die das Betriebssystem zur Verfügung stellt.
Damit sind - sogar unter DOS - Threads überall einsetzbar. Threads gehen mit Ressourcen sparsamer um als Prozesse und haben dabei die Möglichkeit, auf gemeinsame Ruby-Objekte zuzugreifen. Ein Nachteil der Ruby-internen Realisierung von Threads ist, dass die gesamte Applikation blockiert wird, wenn eine Low-Level-Funktion einen Thread blockiert.
Obwohl es theoretisch
möglich ist, wird man meistens entweder unabhängige Prozesse oder Threads
verwenden, nicht aber beides gleichzeitig.