timeout.rb hat einige Probleme, wo es im Grunde nicht immer ganz richtig funktioniert, und ich würde nicht empfehlen, es zu verwenden. Überprüfen System Timer oder Terminator stattdessen
Die System-Timer-Seite insbesondere beschreibt, warum timeout.rb kann fehlschlagen, komplett mit schönen Bildern und alles. Unterm Strich ist:
- Für timeout.rb zu arbeiten, ein frisch erstellten „mörderischer“ Ruby-Thread hat durch die Ruby-Interpreter eingeplant werden.
- M.R.I. 1.8, der von den meisten Ruby-Anwendungen in der Produktion verwendete Interpreter, implementiert Ruby-Threads als grüne Threads.
- Es ist eine bekannte Einschränkung der grünen Threads (die auf einem einzelnen nativen Thread ausgeführt werden), dass, wenn ein grüner Thread einen blockierenden Systemaufruf für die zugrunde liegenden Betriebssysteme ausführt, keiner der grünen Threads in der virtuellen Maschine ausgeführt wird bis der Systemaufruf zurückkehrt.