Какая разница между thread и fork?

Потоки (threads) в Ruby реализованы внутри самого интерпретатора, в то время как fork вызывает создание отдельного процесса операционной системы. thread и fork имеют следующие характеристики:


  • fork медленный, а thread - нет

  • fork не использует общую память

  • thread не вызывает переполнение памяти

  • thread работает в DOS

  • когда поток зависает, вся программа останавливается

  • fork может воспользоваться паузами, ожидая, когда закончатся I/O операции, thread же этого не может (по-крайней мере без помощи).


Возможно, не следует использовать fork и thread одновременно.