From 5bcbe397f4457fa6c76443cc77d662139ef464f2 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Thu, 19 Jul 2012 13:10:37 -0700 Subject: thread_timeout: document additional caveats Again, for the one thousandth time, timing out threads is very tricky business :< --- lib/rainbows/thread_timeout.rb | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'lib') diff --git a/lib/rainbows/thread_timeout.rb b/lib/rainbows/thread_timeout.rb index 4f62aba..8348272 100644 --- a/lib/rainbows/thread_timeout.rb +++ b/lib/rainbows/thread_timeout.rb @@ -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: -- cgit v1.2.3-24-ge0c7