ruby-changes:62771
From: =E5=8D=9C=E9=83=A8=E6=98=8C=E5=B9=B3 <ko1@a...>
Date: Mon, 31 Aug 2020 18:10:24 +0900 (JST)
Subject: [ruby-changes:62771] b674fc9ca2 (master): Thread.exclusive: delete
https://git.ruby-lang.org/ruby.git/commit/?id=b674fc9ca2 From b674fc9ca2498d55c7e4f91592279eb985b8bea1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=9C=E9=83=A8=E6=98=8C=E5=B9=B3?= <shyouhei@r...> Date: Tue, 28 Jul 2020 10:58:37 +0900 Subject: Thread.exclusive: delete Has been deprecated since 2069c9e031fc968d6d3d0fe30a9316851e4d91d8. [Feature #17125][ruby-core:99636] diff --git a/prelude.rb b/prelude.rb index be249af..b1e477a 100644 --- a/prelude.rb +++ b/prelude.rb @@ -1,18 +1,3 @@ https://github.com/ruby/ruby/blob/trunk/prelude.rb#L1 -class << Thread - # call-seq: - # Thread.exclusive { block } -> obj - # - # Wraps the block in a single, VM-global Mutex.synchronize, returning the - # value of the block. A thread executing inside the exclusive section will - # only block other threads which also use the Thread.exclusive mechanism. - def exclusive(&block) end if false - mutex = Mutex.new # :nodoc: - define_method(:exclusive) do |&block| - warn "Thread.exclusive is deprecated, use Thread::Mutex", uplevel: 1 - mutex.synchronize(&block) - end -end - class Binding # :nodoc: def irb diff --git a/spec/ruby/core/thread/exclusive_spec.rb b/spec/ruby/core/thread/exclusive_spec.rb index ca8f105..8c2bc0e 100644 --- a/spec/ruby/core/thread/exclusive_spec.rb +++ b/spec/ruby/core/thread/exclusive_spec.rb @@ -1,47 +1,49 @@ https://github.com/ruby/ruby/blob/trunk/spec/ruby/core/thread/exclusive_spec.rb#L1 require_relative '../../spec_helper' -describe "Thread.exclusive" do - before :each do - ScratchPad.clear - $VERBOSE, @verbose = nil, $VERBOSE - end +ruby_version_is ''...'2.8' do + describe "Thread.exclusive" do + before :each do + ScratchPad.clear + $VERBOSE, @verbose = nil, $VERBOSE + end - after :each do - $VERBOSE = @verbose - end + after :each do + $VERBOSE = @verbose + end - it "yields to the block" do - Thread.exclusive { ScratchPad.record true } - ScratchPad.recorded.should == true - end + it "yields to the block" do + Thread.exclusive { ScratchPad.record true } + ScratchPad.recorded.should == true + end - it "returns the result of yielding" do - Thread.exclusive { :result }.should == :result - end + it "returns the result of yielding" do + Thread.exclusive { :result }.should == :result + end - it "blocks the caller if another thread is also in an exclusive block" do - m = Mutex.new - q1 = Queue.new - q2 = Queue.new + it "blocks the caller if another thread is also in an exclusive block" do + m = Mutex.new + q1 = Queue.new + q2 = Queue.new - t = Thread.new { - Thread.exclusive { - q1.push :ready - q2.pop + t = Thread.new { + Thread.exclusive { + q1.push :ready + q2.pop + } } - } - q1.pop.should == :ready + q1.pop.should == :ready - -> { Thread.exclusive { } }.should block_caller + -> { Thread.exclusive { } }.should block_caller - q2.push :done - t.join - end + q2.push :done + t.join + end - it "is not recursive" do - Thread.exclusive do - -> { Thread.exclusive { } }.should raise_error(ThreadError) + it "is not recursive" do + Thread.exclusive do + -> { Thread.exclusive { } }.should raise_error(ThreadError) + end end end end -- cgit v0.10.2 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/