thread_timeout: document additional caveats
authorEric Wong <normalperson@yhbt.net>
Thu, 19 Jul 2012 20:10:37 +0000 (19 13:10 -0700)
committerEric Wong <normalperson@yhbt.net>
Thu, 19 Jul 2012 20:13:10 +0000 (19 13:13 -0700)
Again, for the one thousandth time, timing out threads is very
tricky business :<

lib/rainbows/thread_timeout.rb

index 4f62aba..8348272 100644 (file)
@@ -44,6 +44,15 @@ require 'thread'
 # does not expose a monotonic clock for users, so don't change
 # the system time while this is running.  All servers should be
 # running ntpd anyways.
+#
+# "ensure" clauses may not fire properly or be interrupted during
+# execution, so do not mix this module with code which relies on "ensure".
+# (This is also true for the "Timeout" module in the Ruby standard library)
+#
+# "recursive locking" ThreadError exceptions may occur if
+# ThreadTimeout fires while a Mutex is locked (because "ensure"
+# clauses may not fire properly).
+
 class Rainbows::ThreadTimeout
 
   # :stopdoc: