summaryrefslogtreecommitdiff
path: root/spec/ruby/core/thread/new_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/core/thread/new_spec.rb')
-rw-r--r--spec/ruby/core/thread/new_spec.rb27
1 files changed, 27 insertions, 0 deletions
diff --git a/spec/ruby/core/thread/new_spec.rb b/spec/ruby/core/thread/new_spec.rb
index c1e0e2a5ad..80929035c7 100644
--- a/spec/ruby/core/thread/new_spec.rb
+++ b/spec/ruby/core/thread/new_spec.rb
@@ -53,4 +53,31 @@ describe "Thread.new" do
ScratchPad.recorded.should == [:good, :in_thread]
end
+ it "releases Mutexes held by the Thread when the Thread finishes" do
+ m1 = Mutex.new
+ m2 = Mutex.new
+ t = Thread.new {
+ m1.lock
+ m1.locked?.should == true
+ m2.lock
+ m2.locked?.should == true
+ }
+ t.join
+ m1.locked?.should == false
+ m2.locked?.should == false
+ end
+
+ it "releases Mutexes held by the Thread when the Thread finishes, also with Mutex#synchronize" do
+ m = Mutex.new
+ t = Thread.new {
+ m.synchronize {
+ m.unlock
+ m.lock
+ }
+ m.lock
+ m.locked?.should == true
+ }
+ t.join
+ m.locked?.should == false
+ end
end