From: Sylvain Joyeux Date: 2010-05-08T01:38:55+09:00 Subject: [ruby-core:30091] [Bug #3212] ConditionVariable may become inconsistent for interrupted threads Issue #3212 has been updated by Sylvain Joyeux. I'm using Thread#raise in conditions where it is safe, i.e. to wake-up threads that are waiting on CV, in places where I know it makes sense. And I find that much cleaner than having to set a per-thread variable telling the thread that he has to raise its own exception. As for not locking the mutex on a second exception, it is linked with the fact that Thread#raise should not be used "blindly". I can accept that. I actually make sure that there is no locking in my applications in the path of the main thread (everything happens in separate threads) so that the applications can shutdown cleanly if the user presses Ctrl+C. I'm not sure what you are referring to with the "consistency of CV#wait vs. CTRL+C" do you refer to the mutex#lock being cancelled by a second exception or to my proposed fix ? ---------------------------------------- http://redmine.ruby-lang.org/issues/show/3212 ---------------------------------------- http://redmine.ruby-lang.org