[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]