diff options
author | Nobuyoshi Nakada <[email protected]> | 2021-06-28 23:01:53 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <[email protected]> | 2021-06-29 11:41:10 +0900 |
commit | 9eae8cdefba61e9e51feb30a4b98525593169666 (patch) | |
tree | b54d8502f7e7733e48c798e517f7676bf0395a51 | |
parent | 983c9ad3f197ab8612c08ea894765b43ed089749 (diff) |
Prefer qualified names under Thread
-rw-r--r-- | benchmark/vm_thread_condvar1.rb | 8 | ||||
-rw-r--r-- | benchmark/vm_thread_condvar2.rb | 10 | ||||
-rw-r--r-- | bootstraptest/test_insns.rb | 2 | ||||
-rw-r--r-- | bootstraptest/test_ractor.rb | 2 | ||||
-rw-r--r-- | lib/forwardable.rb | 2 | ||||
-rw-r--r-- | lib/mutex_m.rb | 12 | ||||
-rw-r--r-- | sample/drb/dchats.rb | 2 | ||||
-rw-r--r-- | test/fiber/scheduler.rb | 10 | ||||
-rw-r--r-- | test/fiber/test_mutex.rb | 18 | ||||
-rw-r--r-- | test/monitor/test_monitor.rb | 22 | ||||
-rw-r--r-- | test/ruby/test_bignum.rb | 2 | ||||
-rw-r--r-- | test/ruby/test_dir.rb | 2 | ||||
-rw-r--r-- | test/ruby/test_exception.rb | 2 | ||||
-rw-r--r-- | test/ruby/test_io.rb | 2 | ||||
-rw-r--r-- | test/ruby/test_process.rb | 2 | ||||
-rw-r--r-- | test/ruby/test_settracefunc.rb | 8 | ||||
-rw-r--r-- | test/ruby/test_thread.rb | 14 | ||||
-rw-r--r-- | test/ruby/test_thread_cv.rb | 52 | ||||
-rw-r--r-- | test/ruby/test_thread_queue.rb | 80 | ||||
-rw-r--r-- | test/test_pstore.rb | 4 | ||||
-rw-r--r-- | test/yaml/test_store.rb | 4 | ||||
-rw-r--r-- | thread.c | 2 | ||||
-rw-r--r-- | thread_sync.c | 98 |
23 files changed, 181 insertions, 179 deletions
diff --git a/benchmark/vm_thread_condvar1.rb b/benchmark/vm_thread_condvar1.rb index cf5706b23e..feed27c3ad 100644 --- a/benchmark/vm_thread_condvar1.rb +++ b/benchmark/vm_thread_condvar1.rb @@ -1,9 +1,9 @@ # two threads, two mutex, two condvar ping-pong require 'thread' -m1 = Mutex.new -m2 = Mutex.new -cv1 = ConditionVariable.new -cv2 = ConditionVariable.new +m1 = Thread::Mutex.new +m2 = Thread::Mutex.new +cv1 = Thread::ConditionVariable.new +cv2 = Thread::ConditionVariable.new max = 100000 i = 0 wait = nil diff --git a/benchmark/vm_thread_condvar2.rb b/benchmark/vm_thread_condvar2.rb index 7c8dc19481..6590c4134b 100644 --- a/benchmark/vm_thread_condvar2.rb +++ b/benchmark/vm_thread_condvar2.rb @@ -1,16 +1,16 @@ # many threads, one mutex, many condvars require 'thread' -m = Mutex.new -cv1 = ConditionVariable.new -cv2 = ConditionVariable.new +m = Thread::Mutex.new +cv1 = Thread::ConditionVariable.new +cv2 = Thread::ConditionVariable.new max = 1000 n = 100 waiting = 0 scvs = [] waiters = n.times.map do |i| - start_cv = ConditionVariable.new + start_cv = Thread::ConditionVariable.new scvs << start_cv - start_mtx = Mutex.new + start_mtx = Thread::Mutex.new start_mtx.synchronize do th = Thread.new(start_mtx, start_cv) do |sm, scv| m.synchronize do diff --git a/bootstraptest/test_insns.rb b/bootstraptest/test_insns.rb index 9052cad7bd..31fdc29d02 100644 --- a/bootstraptest/test_insns.rb +++ b/bootstraptest/test_insns.rb @@ -384,7 +384,7 @@ tests = [ [ 'opt_empty_p', %q{ ''.empty? }, ], [ 'opt_empty_p', %q{ [].empty? }, ], [ 'opt_empty_p', %q{ {}.empty? }, ], - [ 'opt_empty_p', %q{ Queue.new.empty? }, ], + [ 'opt_empty_p', %q{ Thread::Queue.new.empty? }, ], [ 'opt_succ', %q{ 1.succ == 2 }, ], if defined? $FIXNUM_MAX then diff --git a/bootstraptest/test_ractor.rb b/bootstraptest/test_ractor.rb index 80591f6459..28c9e6d90c 100644 --- a/bootstraptest/test_ractor.rb +++ b/bootstraptest/test_ractor.rb @@ -533,7 +533,7 @@ assert_equal '[RuntimeError, "ok", true]', %q{ # threads in a ractor will killed assert_equal '{:ok=>3}', %q{ Ractor.new Ractor.current do |main| - q = Queue.new + q = Thread::Queue.new Thread.new do q << true loop{} diff --git a/lib/forwardable.rb b/lib/forwardable.rb index fb24b8c3e6..c9c4128f9f 100644 --- a/lib/forwardable.rb +++ b/lib/forwardable.rb @@ -76,7 +76,7 @@ # def_delegators :@q, :clear, :first, :push, :shift, :size # end # -# q = Queue.new +# q = Thread::Queue.new # q.enq 1, 2, 3, 4, 5 # q.push 6 # diff --git a/lib/mutex_m.rb b/lib/mutex_m.rb index 18b6256595..706d3c1b3c 100644 --- a/lib/mutex_m.rb +++ b/lib/mutex_m.rb @@ -73,32 +73,32 @@ module Mutex_m mu_initialize end - # See Mutex#synchronize + # See Thread::Mutex#synchronize def mu_synchronize(&block) @_mutex.synchronize(&block) end - # See Mutex#locked? + # See Thread::Mutex#locked? def mu_locked? @_mutex.locked? end - # See Mutex#try_lock + # See Thread::Mutex#try_lock def mu_try_lock @_mutex.try_lock end - # See Mutex#lock + # See Thread::Mutex#lock def mu_lock @_mutex.lock end - # See Mutex#unlock + # See Thread::Mutex#unlock def mu_unlock @_mutex.unlock end - # See Mutex#sleep + # See Thread::Mutex#sleep def sleep(timeout = nil) @_mutex.sleep(timeout) end diff --git a/sample/drb/dchats.rb b/sample/drb/dchats.rb index 58af3cf005..c96486a452 100644 --- a/sample/drb/dchats.rb +++ b/sample/drb/dchats.rb @@ -28,7 +28,7 @@ end class ChatServer def initialize - @mutex = Mutex.new + @mutex = Thread::Mutex.new @members = {} end diff --git a/test/fiber/scheduler.rb b/test/fiber/scheduler.rb index c844200935..af64e4ebb6 100644 --- a/test/fiber/scheduler.rb +++ b/test/fiber/scheduler.rb @@ -21,7 +21,7 @@ class Scheduler @closed = false - @lock = Mutex.new + @lock = Thread::Mutex.new @blocking = 0 @ready = [] @@ -170,7 +170,7 @@ class Scheduler Fiber.yield end - # Used for Kernel#sleep and Mutex#sleep + # Used for Kernel#sleep and Thread::Mutex#sleep def kernel_sleep(duration = nil) # $stderr.puts [__method__, duration, Fiber.current].inspect @@ -179,7 +179,8 @@ class Scheduler return true end - # Used when blocking on synchronization (Mutex#lock, Queue#pop, SizedQueue#push, ...) + # Used when blocking on synchronization (Thread::Mutex#lock, + # Thread::Queue#pop, Thread::SizedQueue#push, ...) def block(blocker, timeout = nil) # $stderr.puts [__method__, blocker, timeout].inspect @@ -201,7 +202,8 @@ class Scheduler end end - # Used when synchronization wakes up a previously-blocked fiber (Mutex#unlock, Queue#push, ...). + # Used when synchronization wakes up a previously-blocked fiber + # (Thread::Mutex#unlock, Thread::Queue#push, ...). # This might be called from another thread. def unblock(blocker, fiber) # $stderr.puts [__method__, blocker, fiber].inspect diff --git a/test/fiber/test_mutex.rb b/test/fiber/test_mutex.rb index 0842427760..b0655f06a5 100644 --- a/test/fiber/test_mutex.rb +++ b/test/fiber/test_mutex.rb @@ -4,7 +4,7 @@ require_relative 'scheduler' class TestFiberMutex < Test::Unit::TestCase def test_mutex_synchronize - mutex = Mutex.new + mutex = Thread::Mutex.new thread = Thread.new do scheduler = Scheduler.new @@ -23,7 +23,7 @@ class TestFiberMutex < Test::Unit::TestCase end def test_mutex_interleaved_locking - mutex = Mutex.new + mutex = Thread::Mutex.new thread = Thread.new do scheduler = Scheduler.new @@ -48,7 +48,7 @@ class TestFiberMutex < Test::Unit::TestCase end def test_mutex_thread - mutex = Mutex.new + mutex = Thread::Mutex.new mutex.lock thread = Thread.new do @@ -71,7 +71,7 @@ class TestFiberMutex < Test::Unit::TestCase end def test_mutex_fiber_raise - mutex = Mutex.new + mutex = Thread::Mutex.new ran = false main = Thread.new do @@ -103,8 +103,8 @@ class TestFiberMutex < Test::Unit::TestCase end def test_condition_variable - mutex = Mutex.new - condition = ConditionVariable.new + mutex = Thread::Mutex.new + condition = Thread::ConditionVariable.new signalled = 0 @@ -138,7 +138,7 @@ class TestFiberMutex < Test::Unit::TestCase end def test_queue - queue = Queue.new + queue = Thread::Queue.new processed = 0 thread = Thread.new do @@ -169,7 +169,7 @@ class TestFiberMutex < Test::Unit::TestCase end def test_queue_pop_waits - queue = Queue.new + queue = Thread::Queue.new running = false thread = Thread.new do @@ -198,7 +198,7 @@ class TestFiberMutex < Test::Unit::TestCase assert_in_out_err %W[-I#{__dir__} -], <<-RUBY, ['in synchronize'], error_pattern, success: false require 'scheduler' - mutex = Mutex.new + mutex = Thread::Mutex.new thread = Thread.new do scheduler = Scheduler.new diff --git a/test/monitor/test_monitor.rb b/test/monitor/test_monitor.rb index 0f17d58f71..3eceee7b2e 100644 --- a/test/monitor/test_monitor.rb +++ b/test/monitor/test_monitor.rb @@ -19,7 +19,7 @@ class TestMonitor < Test::Unit::TestCase def test_enter ary = [] - queue = Queue.new + queue = Thread::Queue.new th = Thread.start { queue.pop @monitor.enter @@ -83,7 +83,7 @@ class TestMonitor < Test::Unit::TestCase def test_synchronize ary = [] - queue = Queue.new + queue = Thread::Queue.new th = Thread.start { queue.pop @monitor.synchronize do @@ -108,7 +108,7 @@ class TestMonitor < Test::Unit::TestCase def test_killed_thread_in_synchronize ary = [] - queue = Queue.new + queue = Thread::Queue.new t1 = Thread.start { queue.pop @monitor.synchronize { @@ -136,8 +136,8 @@ class TestMonitor < Test::Unit::TestCase end def test_try_enter - queue1 = Queue.new - queue2 = Queue.new + queue1 = Thread::Queue.new + queue2 = Thread::Queue.new th = Thread.start { queue1.deq @monitor.enter @@ -176,8 +176,8 @@ class TestMonitor < Test::Unit::TestCase end def test_mon_locked_and_owned - queue1 = Queue.new - queue2 = Queue.new + queue1 = Thread::Queue.new + queue2 = Thread::Queue.new th = Thread.start { @monitor.enter queue1.enq(nil) @@ -210,7 +210,7 @@ class TestMonitor < Test::Unit::TestCase cond = @monitor.new_cond a = "foo" - queue1 = Queue.new + queue1 = Thread::Queue.new th = Thread.start do queue1.deq @monitor.synchronize do @@ -262,7 +262,7 @@ class TestMonitor < Test::Unit::TestCase def test_timedwait cond = @monitor.new_cond b = "foo" - queue2 = Queue.new + queue2 = Thread::Queue.new th = Thread.start do queue2.deq @monitor.synchronize do @@ -282,7 +282,7 @@ class TestMonitor < Test::Unit::TestCase assert_join_threads([th, th2]) c = "foo" - queue3 = Queue.new + queue3 = Thread::Queue.new th = Thread.start do queue3.deq @monitor.synchronize do @@ -312,7 +312,7 @@ class TestMonitor < Test::Unit::TestCase # end # end # } -# queue3 = Queue.new +# queue3 = Thread::Queue.new # Thread.start do # queue3.pop # @monitor.synchronize do diff --git a/test/ruby/test_bignum.rb b/test/ruby/test_bignum.rb index 68c8461951..3ffe7114b5 100644 --- a/test/ruby/test_bignum.rb +++ b/test/ruby/test_bignum.rb @@ -632,7 +632,7 @@ class TestBignum < Test::Unit::TestCase time = Time.now end_flag = false num = (65536 ** 65536) - q = Queue.new + q = Thread::Queue.new thread = Thread.new do assert_raise(RuntimeError) { q << true diff --git a/test/ruby/test_dir.rb b/test/ruby/test_dir.rb index bb268f2ab3..71bff5f5c3 100644 --- a/test/ruby/test_dir.rb +++ b/test/ruby/test_dir.rb @@ -131,7 +131,7 @@ class TestDir < Test::Unit::TestCase def test_chdir_conflict pwd = Dir.pwd - q = Queue.new + q = Thread::Queue.new t = Thread.new do q.pop Dir.chdir(pwd) rescue $! diff --git a/test/ruby/test_exception.rb b/test/ruby/test_exception.rb index 8c4e6889ab..62da13d1b9 100644 --- a/test/ruby/test_exception.rb +++ b/test/ruby/test_exception.rb @@ -814,7 +814,7 @@ end.join bug12741 = '[ruby-core:77222] [Bug #12741]' x = Thread.current - q = Queue.new + q = Thread::Queue.new y = Thread.start do q.pop begin diff --git a/test/ruby/test_io.rb b/test/ruby/test_io.rb index 7acedb60e2..f7240c4cf6 100644 --- a/test/ruby/test_io.rb +++ b/test/ruby/test_io.rb @@ -3736,7 +3736,7 @@ __END__ begin; bug13158 = '[ruby-core:79262] [Bug #13158]' closed = nil - q = Queue.new + q = Thread::Queue.new IO.pipe do |r, w| thread = Thread.new do begin diff --git a/test/ruby/test_process.rb b/test/ruby/test_process.rb index 0493544139..80d2eefca9 100644 --- a/test/ruby/test_process.rb +++ b/test/ruby/test_process.rb @@ -2433,7 +2433,7 @@ EOS rescue SystemCallError w.syswrite("exec failed\n") end - q = Queue.new + q = Thread::Queue.new th1 = Thread.new { i = 0; i += 1 while q.empty?; i } th2 = Thread.new { j = 0; j += 1 while q.empty? && Thread.pass.nil?; j } sleep 0.5 diff --git a/test/ruby/test_settracefunc.rb b/test/ruby/test_settracefunc.rb index c8ec81c72a..dafe58d70c 100644 --- a/test/ruby/test_settracefunc.rb +++ b/test/ruby/test_settracefunc.rb @@ -1984,7 +1984,7 @@ class TestSetTraceFunc < Test::Unit::TestCase def test_thread_add_trace_func events = [] base_line = __LINE__ - q = Queue.new + q = Thread::Queue.new t = Thread.new{ Thread.current.add_trace_func proc{|ev, file, line, *args| events << [ev, line] @@ -2010,7 +2010,7 @@ class TestSetTraceFunc < Test::Unit::TestCase # other thread events = [] - m2t_q = Queue.new + m2t_q = Thread::Queue.new t = Thread.new{ Thread.current.abort_on_exception = true @@ -2320,8 +2320,8 @@ class TestSetTraceFunc < Test::Unit::TestCase events << Thread.current end - q1 = Queue.new - q2 = Queue.new + q1 = Thread::Queue.new + q2 = Thread::Queue.new th = Thread.new{ q1 << :ok; q2.pop diff --git a/test/ruby/test_thread.rb b/test/ruby/test_thread.rb index dbd0328e28..a75d42b962 100644 --- a/test/ruby/test_thread.rb +++ b/test/ruby/test_thread.rb @@ -496,7 +496,7 @@ class TestThread < Test::Unit::TestCase end assert_in_out_err([], <<-INPUT, %w(false :sig), [], :signal=>:INT, timeout: 1, timeout_error: nil) p Thread.ignore_deadlock - q = Queue.new + q = Thread::Queue.new trap(:INT){q.push :sig} Thread.ignore_deadlock = true p q.pop @@ -731,8 +731,8 @@ class TestThread < Test::Unit::TestCase def make_handle_interrupt_test_thread1 flag r = [] - ready_q = Queue.new - done_q = Queue.new + ready_q = Thread::Queue.new + done_q = Thread::Queue.new th = Thread.new{ begin Thread.handle_interrupt(RuntimeError => flag){ @@ -809,7 +809,7 @@ class TestThread < Test::Unit::TestCase def test_handle_interrupt_blocking r = nil - q = Queue.new + q = Thread::Queue.new e = Class.new(Exception) th_s = Thread.current th = Thread.start { @@ -833,7 +833,7 @@ class TestThread < Test::Unit::TestCase def test_handle_interrupt_and_io assert_in_out_err([], <<-INPUT, %w(ok), []) th_waiting = true - q = Queue.new + q = Thread::Queue.new t = Thread.new { Thread.current.report_on_exception = false @@ -1235,7 +1235,7 @@ q.pop end if Process.respond_to?(:fork) def test_fork_while_locked - m = Mutex.new + m = Thread::Mutex.new thrs = [] 3.times do |i| thrs << Thread.new { m.synchronize { Process.waitpid2(fork{})[1] } } @@ -1268,7 +1268,7 @@ q.pop def test_fork_while_mutex_locked_by_forker skip 'needs fork' unless Process.respond_to?(:fork) - m = Mutex.new + m = Thread::Mutex.new m.synchronize do pid = fork do exit!(2) unless m.locked? diff --git a/test/ruby/test_thread_cv.rb b/test/ruby/test_thread_cv.rb index 38bcc3b8fa..5f19b85bc0 100644 --- a/test/ruby/test_thread_cv.rb +++ b/test/ruby/test_thread_cv.rb @@ -13,8 +13,8 @@ class TestThreadConditionVariable < Test::Unit::TestCase end def test_condvar_signal_and_wait - mutex = Mutex.new - condvar = ConditionVariable.new + mutex = Thread::Mutex.new + condvar = Thread::ConditionVariable.new result = [] mutex.synchronize do t = Thread.new do @@ -35,8 +35,8 @@ class TestThreadConditionVariable < Test::Unit::TestCase def test_condvar_wait_exception_handling # Calling wait in the only thread running should raise a ThreadError of # 'stopping only thread' - mutex = Mutex.new - condvar = ConditionVariable.new + mutex = Thread::Mutex.new + condvar = Thread::ConditionVariable.new locked = false thread = Thread.new do @@ -61,8 +61,8 @@ class TestThreadConditionVariable < Test::Unit::TestCase def test_condvar_wait_and_broadcast nr_threads = 3 threads = Array.new - mutex = Mutex.new - condvar = ConditionVariable.new + mutex = Thread::Mutex.new + condvar = Thread::ConditionVariable.new result = [] nr_threads.times do |i| @@ -91,8 +91,8 @@ class TestThreadConditionVariable < Test::Unit::TestCase def test_condvar_wait_deadlock assert_in_out_err([], <<-INPUT, /\Afatal\nNo live threads left\. Deadlock/, []) - mutex = Mutex.new - cv = ConditionVariable.new + mutex = Thread::Mutex.new + cv = Thread::ConditionVariable.new klass = nil mesg = nil @@ -112,8 +112,8 @@ INPUT def test_condvar_wait_deadlock_2 nr_threads = 3 threads = Array.new - mutex = Mutex.new - condvar = ConditionVariable.new + mutex = Thread::Mutex.new + condvar = Thread::ConditionVariable.new nr_threads.times do |i| if (i != 0) @@ -136,8 +136,8 @@ INPUT end def test_condvar_timed_wait - mutex = Mutex.new - condvar = ConditionVariable.new + mutex = Thread::Mutex.new + condvar = Thread::ConditionVariable.new timeout = 0.3 locked = false @@ -157,15 +157,15 @@ INPUT end def test_condvar_nolock - mutex = Mutex.new - condvar = ConditionVariable.new + mutex = Thread::Mutex.new + condvar = Thread::ConditionVariable.new assert_raise(ThreadError) {condvar.wait(mutex)} end def test_condvar_nolock_2 - mutex = Mutex.new - condvar = ConditionVariable.new + mutex = Thread::Mutex.new + condvar = Thread::ConditionVariable.new Thread.new do assert_raise(ThreadError) {condvar.wait(mutex)} @@ -173,8 +173,8 @@ INPUT end def test_condvar_nolock_3 - mutex = Mutex.new - condvar = ConditionVariable.new + mutex = Thread::Mutex.new + condvar = Thread::ConditionVariable.new Thread.new do assert_raise(ThreadError) {condvar.wait(mutex, 0.1)} @@ -182,22 +182,22 @@ INPUT end def test_condvar_empty_signal - mutex = Mutex.new - condvar = ConditionVariable.new + mutex = Thread::Mutex.new + condvar = Thread::ConditionVariable.new assert_nothing_raised(Exception) { mutex.synchronize {condvar.signal} } end def test_condvar_empty_broadcast - mutex = Mutex.new - condvar = ConditionVariable.new + mutex = Thread::Mutex.new + condvar = Thread::ConditionVariable.new assert_nothing_raised(Exception) { mutex.synchronize {condvar.broadcast} } end def test_dup bug9440 = '[ruby-core:59961] [Bug #9440]' - condvar = ConditionVariable.new + condvar = Thread::ConditionVariable.new assert_raise(NoMethodError, bug9440) do condvar.dup end @@ -207,7 +207,7 @@ INPUT def test_dump bug9674 = '[ruby-core:61677] [Bug #9674]' - condvar = ConditionVariable.new + condvar = Thread::ConditionVariable.new assert_raise_with_message(TypeError, /#{ConditionVariable}/, bug9674) do Marshal.dump(condvar) end @@ -219,8 +219,8 @@ INPUT end def test_condvar_fork - mutex = Mutex.new - condvar = ConditionVariable.new + mutex = Thread::Mutex.new + condvar = Thread::ConditionVariable.new thrs = (1..10).map do Thread.new { mutex.synchronize { condvar.wait(mutex) } } end diff --git a/test/ruby/test_thread_queue.rb b/test/ruby/test_thread_queue.rb index 6185abff9f..3fa0eae2c1 100644 --- a/test/ruby/test_thread_queue.rb +++ b/test/ruby/test_thread_queue.rb @@ -66,7 +66,7 @@ class TestThreadQueue < Test::Unit::TestCase [e, "Enumerable"], [Struct.new(:to_a), "Array-like"], ) do |a, type| - q = Queue.new(a.new([1,2,3])) + q = Thread::Queue.new(a.new([1,2,3])) assert_equal(3, q.size, type) assert_not_predicate(q, :empty?, type) assert_equal(1, q.pop, type) @@ -77,14 +77,14 @@ class TestThreadQueue < Test::Unit::TestCase end def test_sized_queue_initialize - q = SizedQueue.new(1) + q = Thread::SizedQueue.new(1) assert_equal 1, q.max - assert_raise(ArgumentError) { SizedQueue.new(0) } - assert_raise(ArgumentError) { SizedQueue.new(-1) } + assert_raise(ArgumentError) { Thread::SizedQueue.new(0) } + assert_raise(ArgumentError) { Thread::SizedQueue.new(-1) } end def test_sized_queue_assign_max - q = SizedQueue.new(2) + q = Thread::SizedQueue.new(2) assert_equal(2, q.max) q.max = 1 assert_equal(1, q.max) @@ -104,7 +104,7 @@ class TestThreadQueue < Test::Unit::TestCase end def test_queue_pop_interrupt - q = Queue.new + q = Thread::Queue.new t1 = Thread.new { q.pop } sleep 0.01 until t1.stop? t1.kill.join @@ -112,14 +112,14 @@ class TestThreadQueue < Test::Unit::TestCase end def test_queue_pop_non_block - q = Queue.new + q = Thread::Queue.new assert_raise_with_message(ThreadError, /empty/) do q.pop(true) end end def test_sized_queue_pop_interrupt - q = SizedQueue.new(1) + q = Thread::SizedQueue.new(1) t1 = Thread.new { q.pop } sleep 0.01 until t1.stop? t1.kill.join @@ -127,14 +127,14 @@ class TestThreadQueue < Test::Unit::TestCase end def test_sized_queue_pop_non_block - q = SizedQueue.new(1) + q = Thread::SizedQueue.new(1) assert_raise_with_message(ThreadError, /empty/) do q.pop(true) end end def test_sized_queue_push_interrupt - q = SizedQueue.new(1) + q = Thread::SizedQueue.new(1) q.push(1) assert_raise_with_message(ThreadError, /full/) do q.push(2, true) @@ -142,7 +142,7 @@ class TestThreadQueue < Test::Unit::TestCase end def test_sized_queue_push_non_block - q = SizedQueue.new(1) + q = Thread::SizedQueue.new(1) q.push(1) t1 = Thread.new { q.push(2) } sleep 0.01 until t1.stop? @@ -159,7 +159,7 @@ class TestThreadQueue < Test::Unit::TestCase assert_normal_exit(<<-"_eom", bug5343, **{:timeout => timeout, :chdir=>d}) #{total_count}.times do |i| open("test_thr_kill_count", "w") {|f| f.puts i } - queue = Queue.new + queue = Thread::Queue.new r, w = IO.pipe th = Thread.start { queue.push(nil) @@ -178,20 +178,20 @@ class TestThreadQueue < Test::Unit::TestCase end def test_queue_push_return_value - q = Queue.new + q = Thread::Queue.new retval = q.push(1) assert_same q, retval end def test_queue_clear_return_value - q = Queue.new + q = Thread::Queue.new retval = q.clear assert_same q, retval end def test_sized_queue_clear - # Fill queue, then test that SizedQueue#clear wakes up all waiting threads - sq = SizedQueue.new(2) + # Fill queue, then test that Thread::SizedQueue#clear wakes up all waiting threads + sq = Thread::SizedQueue.new(2) 2.times { sq << 1 } t1 = Thread.new do @@ -212,19 +212,19 @@ class TestThreadQueue < Test::Unit::TestCase end def test_sized_queue_push_return_value - q = SizedQueue.new(1) + q = Thread::SizedQueue.new(1) retval = q.push(1) assert_same q, retval end def test_sized_queue_clear_return_value - q = SizedQueue.new(1) + q = Thread::SizedQueue.new(1) retval = q.clear assert_same q, retval end def test_sized_queue_throttle - q = SizedQueue.new(1) + q = Thread::SizedQueue.new(1) i = 0 consumer = Thread.new do while q.pop @@ -247,7 +247,7 @@ class TestThreadQueue < Test::Unit::TestCase end def test_queue_thread_raise - q = Queue.new + q = Thread::Queue.new th1 = Thread.new do begin q.pop @@ -277,7 +277,7 @@ class TestThreadQueue < Test::Unit::TestCase def test_dup bug9440 = '[ruby-core:59961] [Bug #9440]' - q = Queue.new + q = Thread::Queue.new assert_raise(NoMethodError, bug9440) do q.dup end @@ -287,12 +287,12 @@ class TestThreadQueue < Test::Unit::TestCase def test_dump bug9674 = '[ruby-core:61677] [Bug #9674]' - q = Queue.new + q = Thread::Queue.new assert_raise_with_message(TypeError, /#{Queue}/, bug9674) do Marshal.dump(q) end - sq = SizedQueue.new(1) + sq = Thread::SizedQueue.new(1) assert_raise_with_message(TypeError, /#{SizedQueue}/, bug9674) do Marshal.dump(sq) end @@ -304,7 +304,7 @@ class TestThreadQueue < Test::Unit::TestCase end def test_close - [->{Queue.new}, ->{SizedQueue.new 3}].each do |qcreate| + [->{Thread::Queue.new}, ->{Thread::SizedQueue.new 3}].each do |qcreate| q = qcreate.call assert_equal false, q.closed? q << :something @@ -343,15 +343,15 @@ class TestThreadQueue < Test::Unit::TestCase end def test_queue_close_wakeup - close_wakeup(15, 18){Queue.new} + close_wakeup(15, 18){Thread::Queue.new} end def test_size_queue_close_wakeup - close_wakeup(5, 8){SizedQueue.new 9} + close_wakeup(5, 8){Thread::SizedQueue.new 9} end def test_sized_queue_one_closed_interrupt - q = SizedQueue.new 1 + q = Thread::SizedQueue.new 1 q << :one t1 = Thread.new { Thread.current.report_on_exception = false @@ -368,7 +368,7 @@ class TestThreadQueue < Test::Unit::TestCase # make sure that shutdown state is handled properly by empty? for the non-blocking case def test_empty_non_blocking - q = SizedQueue.new 3 + q = Thread::SizedQueue.new 3 3.times{|i| q << i} # these all block cos the queue is full @@ -394,13 +394,13 @@ class TestThreadQueue < Test::Unit::TestCase end def test_sized_queue_closed_push_non_blocking - q = SizedQueue.new 7 + q = Thread::SizedQueue.new 7 q.close assert_raise_with_message(ClosedQueueError, /queue closed/){q.push(non_block=true)} end def test_blocked_pushers - q = SizedQueue.new 3 + q = Thread::SizedQueue.new 3 prod_threads = 6.times.map do |i| thr = Thread.new{ Thread.current.report_on_exception = false @@ -446,9 +446,9 @@ class TestThreadQueue < Test::Unit::TestCase end def test_deny_pushers - [->{Queue.new}, ->{SizedQueue.new 3}].each do |qcreate| + [->{Thread::Queue.new}, ->{Thread::SizedQueue.new 3}].each do |qcreate| q = qcreate[] - synq = Queue.new + synq = Thread::Queue.new prod_threads = 20.times.map do |i| Thread.new { synq.pop @@ -466,7 +466,7 @@ class TestThreadQueue < Test::Unit::TestCase # size should account for waiting pushers during shutdown def sized_queue_size_close - q = SizedQueue.new 4 + q = Thread::SizedQueue.new 4 4.times{|i| q << i} Thread.new{ q << 5 } Thread.new{ q << 6 } @@ -478,7 +478,7 @@ class TestThreadQueue < Test::Unit::TestCase end def test_blocked_pushers_empty - q = SizedQueue.new 3 + q = Thread::SizedQueue.new 3 prod_threads = 6.times.map do |i| Thread.new{ Thread.current.report_on_exception = false @@ -510,14 +510,14 @@ class TestThreadQueue < Test::Unit::TestCase # test thread wakeup on one-element SizedQueue with close def test_one_element_sized_queue - q = SizedQueue.new 1 + q = Thread::SizedQueue.new 1 t = Thread.new{ q.pop } q.close assert_nil t.value end def test_close_twice - [->{Queue.new}, ->{SizedQueue.new 3}].each do |qcreate| + [->{Thread::Queue.new}, ->{Thread::SizedQueue.new 3}].each do |qcreate| q = qcreate[] q.close assert_nothing_raised(ClosedQueueError){q.close} @@ -525,7 +525,7 @@ class TestThreadQueue < Test::Unit::TestCase end def test_queue_close_multi_multi - q = SizedQueue.new rand(800..1200) + q = Thread::SizedQueue.new rand(800..1200) count_items = rand(3000..5000) count_producers = rand(10..20) @@ -587,7 +587,7 @@ class TestThreadQueue < Test::Unit::TestCase end assert_in_out_err([], <<-INPUT, %w(INT INT exit), []) - q = Queue.new + q = Thread::Queue.new trap(:INT){ q.push 'INT' } @@ -604,8 +604,8 @@ class TestThreadQueue < Test::Unit::TestCase end def test_fork_while_queue_waiting - q = Queue.new - sq = SizedQueue.new(1) + q = Thread::Queue.new + sq = Thread::SizedQueue.new(1) thq = Thread.new { q.pop } thsq = Thread.new { sq.pop } Thread.pass until thq.stop? && thsq.stop? diff --git a/test/test_pstore.rb b/test/test_pstore.rb index 52b74f3775..fe5f8711a4 100644 --- a/test/test_pstore.rb +++ b/test/test_pstore.rb @@ -75,7 +75,7 @@ class PStoreTest < Test::Unit::TestCase end def test_thread_safe - q1 = Queue.new + q1 = Thread::Queue.new assert_raise(PStore::Error) do th = Thread.new do @pstore.transaction do @@ -92,7 +92,7 @@ class PStoreTest < Test::Unit::TestCase th.join end end - q2 = Queue.new + q2 = Thread::Queue.new begin pstore = PStore.new(second_file, true) cur = Thread.current diff --git a/test/yaml/test_store.rb b/test/yaml/test_store.rb index 9112c569a3..ef8d3229c1 100644 --- a/test/yaml/test_store.rb +++ b/test/yaml/test_store.rb @@ -75,7 +75,7 @@ class YAMLStoreTest < Test::Unit::TestCase end def test_thread_safe - q1 = Queue.new + q1 = Thread::Queue.new assert_raise(PStore::Error) do th = Thread.new do @yaml_store.transaction do @@ -92,7 +92,7 @@ class YAMLStoreTest < Test::Unit::TestCase th.join end end - q2 = Queue.new + q2 = Thread::Queue.new begin yaml_store = YAML::Store.new(second_file, true) cur = Thread.current @@ -3153,7 +3153,7 @@ rb_thread_s_ignore_deadlock(VALUE _) * deadlock condition via some other means, such as a signal. * * Thread.ignore_deadlock = true - * queue = Queue.new + * queue = Thread::Queue.new * * trap(:SIGUSR1){queue.push "Received signal"} * diff --git a/thread_sync.c b/thread_sync.c index f78b0b5357..2837f454f4 100644 --- a/thread_sync.c +++ b/thread_sync.c @@ -65,14 +65,14 @@ static void rb_mutex_abandon_locking_mutex(rb_thread_t *th); static const char* rb_mutex_unlock_th(rb_mutex_t *mutex, rb_thread_t *th, rb_fiber_t *fiber); /* - * Document-class: Mutex + * Document-class: Thread::Mutex * - * Mutex implements a simple semaphore that can be used to coordinate access to - * shared data from multiple concurrent threads. + * Thread::Mutex implements a simple semaphore that can be used to + * coordinate access to shared data from multiple concurrent threads. * * Example: * - * semaphore = Mutex.new + * semaphore = Thread::Mutex.new * * a = Thread.new { * semaphore.synchronize { @@ -164,7 +164,7 @@ mutex_alloc(VALUE klass) /* * call-seq: - * Mutex.new -> mutex + * Thread::Mutex.new -> mutex * * Creates a new Mutex */ @@ -600,7 +600,7 @@ mutex_sleep(int argc, VALUE *argv, VALUE self) * mutex.synchronize { ... } -> result of the block * * Obtains a lock, runs the block, and releases the lock when the block - * completes. See the example under +Mutex+. + * completes. See the example under Thread::Mutex. */ VALUE @@ -615,7 +615,7 @@ rb_mutex_synchronize(VALUE mutex, VALUE (*func)(VALUE arg), VALUE arg) * mutex.synchronize { ... } -> result of the block * * Obtains a lock, runs the block, and releases the lock when the block - * completes. See the example under +Mutex+. + * completes. See the example under Thread::Mutex. */ static VALUE rb_mutex_synchronize_m(VALUE self) @@ -792,7 +792,7 @@ queue_closed_p(VALUE self) * Document-class: ClosedQueueError * * The exception class which will be raised when pushing into a closed - * Queue. See Queue#close and SizedQueue#close. + * Queue. See Thread::Queue#close and Thread::SizedQueue#close. */ NORETURN(static void raise_closed_queue_error(VALUE self)); @@ -811,19 +811,19 @@ queue_closed_result(VALUE self, struct rb_queue *q) } /* - * Document-class: Queue + * Document-class: Thread::Queue * - * The Queue class implements multi-producer, multi-consumer queues. - * It is especially useful in threaded programming when information - * must be exchanged safely between multiple threads. The Queue class - * implements all the required locking semantics. + * The Thread::Queue class implements multi-producer, multi-consumer + * queues. It is especially useful in threaded programming when + * information must be exchanged safely between multiple threads. The + * Thread::Queue class implements all the required locking semantics. * * The class implements FIFO type of queue. In a FIFO queue, the first * tasks added are the first retrieved. * * Example: * - * queue = Queue.new + * queue = Thread::Queue.new * * producer = Thread.new do * 5.times do |i| @@ -853,9 +853,9 @@ queue_closed_result(VALUE self, struct rb_queue *q) * * Example: * - * q = Queue.new - * q = Queue.new([a, b, c]) - * q = Queue.new(items) + * q = Thread::Queue.new + * q = Thread::Queue.new([a, b, c]) + * q = Thread::Queue.new(items) */ static VALUE @@ -886,7 +886,7 @@ queue_do_push(VALUE self, struct rb_queue *q, VALUE obj) } /* - * Document-method: Queue#close + * Document-method: Thread::Queue#close * call-seq: * close * @@ -909,7 +909,7 @@ queue_do_push(VALUE self, struct rb_queue *q, VALUE obj) * * Example: * - * q = Queue.new + * q = Thread::Queue.new * Thread.new{ * while e = q.deq # wait for nil to break loop * # ... @@ -933,7 +933,7 @@ rb_queue_close(VALUE self) } /* - * Document-method: Queue#closed? + * Document-method: Thread::Queue#closed? * call-seq: closed? * * Returns +true+ if the queue is closed. @@ -946,7 +946,7 @@ rb_queue_closed_p(VALUE self) } /* - * Document-method: Queue#push + * Document-method: Thread::Queue#push * call-seq: * push(object) * enq(object) @@ -1049,7 +1049,7 @@ queue_pop_should_block(int argc, const VALUE *argv) } /* - * Document-method: Queue#pop + * Document-method: Thread::Queue#pop * call-seq: * pop(non_block=false) * deq(non_block=false) @@ -1070,7 +1070,7 @@ rb_queue_pop(int argc, VALUE *argv, VALUE self) } /* - * Document-method: Queue#empty? + * Document-method: Thread::Queue#empty? * call-seq: empty? * * Returns +true+ if the queue is empty. @@ -1083,7 +1083,7 @@ rb_queue_empty_p(VALUE self) } /* - * Document-method: Queue#clear + * Document-method: Thread::Queue#clear * * Removes all objects from the queue. */ @@ -1098,7 +1098,7 @@ rb_queue_clear(VALUE self) } /* - * Document-method: Queue#length + * Document-method: Thread::Queue#length * call-seq: * length * size @@ -1113,7 +1113,7 @@ rb_queue_length(VALUE self) } /* - * Document-method: Queue#num_waiting + * Document-method: Thread::Queue#num_waiting * * Returns the number of threads waiting on the queue. */ @@ -1127,12 +1127,12 @@ rb_queue_num_waiting(VALUE self) } /* - * Document-class: SizedQueue + * Document-class: Thread::SizedQueue * * This class represents queues of specified size capacity. The push operation * may be blocked if the capacity is full. * - * See Queue for an example of how a SizedQueue works. + * See Thread::Queue for an example of how a Thread::SizedQueue works. */ /* @@ -1162,11 +1162,11 @@ rb_szqueue_initialize(VALUE self, VALUE vmax) } /* - * Document-method: SizedQueue#close + * Document-method: Thread::SizedQueue#close * call-seq: * close * - * Similar to Queue#close. + * Similar to Thread::Queue#close. * * The difference is behavior with waiting enqueuing threads. * @@ -1187,7 +1187,7 @@ rb_szqueue_close(VALUE self) } /* - * Document-method: SizedQueue#max + * Document-method: Thread::SizedQueue#max * * Returns the maximum size of the queue. */ @@ -1199,7 +1199,7 @@ rb_szqueue_max_get(VALUE self) } /* - * Document-method: SizedQueue#max= + * Document-method: Thread::SizedQueue#max= * call-seq: max=(number) * * Sets the maximum size of the queue to the given +number+. @@ -1235,7 +1235,7 @@ szqueue_push_should_block(int argc, const VALUE *argv) } /* - * Document-method: SizedQueue#push + * Document-method: Thread::SizedQueue#push * call-seq: * push(object, non_block=false) * enq(object, non_block=false) @@ -1299,7 +1299,7 @@ szqueue_do_pop(VALUE self, int should_block) } /* - * Document-method: SizedQueue#pop + * Document-method: Thread::SizedQueue#pop * call-seq: * pop(non_block=false) * deq(non_block=false) @@ -1320,7 +1320,7 @@ rb_szqueue_pop(int argc, VALUE *argv, VALUE self) } /* - * Document-method: SizedQueue#clear + * Document-method: Thread::SizedQueue#clear * * Removes all objects from the queue. */ @@ -1336,7 +1336,7 @@ rb_szqueue_clear(VALUE self) } /* - * Document-method: SizedQueue#length + * Document-method: Thread::SizedQueue#length * call-seq: * length * size @@ -1353,7 +1353,7 @@ rb_szqueue_length(VALUE self) } /* - * Document-method: SizedQueue#num_waiting + * Document-method: Thread::SizedQueue#num_waiting * * Returns the number of threads waiting on the queue. */ @@ -1367,7 +1367,7 @@ rb_szqueue_num_waiting(VALUE self) } /* - * Document-method: SizedQueue#empty? + * Document-method: Thread::SizedQueue#empty? * call-seq: empty? * * Returns +true+ if the queue is empty. @@ -1389,7 +1389,7 @@ struct rb_condvar { }; /* - * Document-class: ConditionVariable + * Document-class: Thread::ConditionVariable * * ConditionVariable objects augment class Mutex. Using condition variables, * it is possible to suspend while in the middle of a critical section until a @@ -1397,8 +1397,8 @@ struct rb_condvar { * * Example: * - * mutex = Mutex.new - * resource = ConditionVariable.new + * mutex = Thread::Mutex.new + * resource = Thread::ConditionVariable.new * * a = Thread.new { * mutex.synchronize { @@ -1486,7 +1486,7 @@ do_sleep(VALUE args) } /* - * Document-method: ConditionVariable#wait + * Document-method: Thread::ConditionVariable#wait * call-seq: wait(mutex, timeout=nil) * * Releases the lock held in +mutex+ and waits; reacquires the lock on wakeup. @@ -1517,7 +1517,7 @@ rb_condvar_wait(int argc, VALUE *argv, VALUE self) } /* - * Document-method: ConditionVariable#signal + * Document-method: Thread::ConditionVariable#signal * * Wakes up the first thread in line waiting for this lock. */ @@ -1531,7 +1531,7 @@ rb_condvar_signal(VALUE self) } /* - * Document-method: ConditionVariable#broadcast + * Document-method: Thread::ConditionVariable#broadcast * * Wakes up all threads waiting for this lock. */ @@ -1565,11 +1565,11 @@ static void Init_thread_sync(void) { #undef rb_intern -#if 0 - rb_cMutex = rb_define_class("Mutex", rb_cObject); /* teach rdoc Mutex */ - rb_cConditionVariable = rb_define_class("ConditionVariable", rb_cObject); /* teach rdoc ConditionVariable */ - rb_cQueue = rb_define_class("Queue", rb_cObject); /* teach rdoc Queue */ - rb_cSizedQueue = rb_define_class("SizedQueue", rb_cObject); /* teach rdoc SizedQueue */ +#if defined(TEACH_RDOC) && TEACH_RDOC == 42 + rb_cMutex = rb_define_class_under(rb_cThread, "Mutex", rb_cObject); + rb_cConditionVariable = rb_define_class_under(rb_cThread, "ConditionVariable", rb_cObject); + rb_cQueue = rb_define_class_under(rb_cThread, "Queue", rb_cObject); + rb_cSizedQueue = rb_define_class_under(rb_cThread, "SizedQueue", rb_cObject); #endif #define DEFINE_CLASS(name, super) \ |