* ext/thread/thread.c (undumpable): ConditionVariable and Queue
are not dumpable. [ruby-core:61677] [Bug #9674]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45423 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* ext/thread/thread.c (rb_szqueue_max_set): use correct queue and
limit wakeups. [Bug #9343][ruby-core:60517]
* test/thread/test_queue.rb (test_sized_queue_assign_max):
test for bug
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44852 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* ext/thread/thread.c (Init_thread): ConditionVariable and Queue
are not able to copy. [ruby-core:59961] [Bug #9440]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44681 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
on SizedQueue#clear. [ruby-core:59462] [Bug #9342]
* test/thread/test_queue.rb: add test. the patch is from
Justin Collins.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44595 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
instead of GET_QUEUE_WAITERS to prevent deadlock. Patch by Eric Wong.
[Bug #9302] [ruby-core:59324]
* test/thread/test_queue.rb: add test
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44583 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
require extension libraries. The patch is from nobu
(Nobuyoshi Nakada).
* ext/thread/extconf.rb: for build ext/thread/thread.c.
* include/ruby/intern.h: ditto.
* thread.c: ditto.
* lib/thread.rb: removed and replaced by ext/thread/thread.c.
* ext/thread/thread.c: Queue, SizedQueue and ConditionVariable
implementations in C. This patch is based on patches from panaggio
(Ricardo Panaggio) and funny_falcon (Yura Sokolov) and ko1
(Koichi Sasada). [ruby-core:31513] [Feature #3620]
* test/thread/test_queue.rb (test_queue_thread_raise): add a test for
ensuring that killed thread should be removed from waiting threads.
It is based on a code by ko1 (Koichi Sasada). [ruby-core:45950]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42862 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
iterations from 2000 to 250. When running on uniprocessor
systems, every th.kill needs TIME_QUANTUM_USEC time (i.e.
100msec on posix systems). Because, "r.read 1" is 3 steps
operations that 1) release GVL 2) read 3) acquire gvl and
(1) invoke context switch to main thread. and then, main
thread's th.kill resume (1), but not (2). Thus read interrupt
need TIME_QUANTUM_USEC. Then maximum iteration is 30sec/100msec
= 300.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39688 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
@waiters.
* test/thread/test_queue.rb (test_sized_queue_and_wakeup): remove
a test because @waiters no longer have a chance to duplicated. Now it's
a hash.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38109 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* test/ruby/envutil.rb (EnvUtil#invoke_ruby): kill child process
before Timeout::Error is raised. rmdir of mktmpdir fails with
EACCES if child process is alive on Windows.
* test/thread/test_queue.rb (TestQueue): increase timeout.
This test takes long time on Windows XP.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37057 b2dd03c8-39d4-4d8f-98ff-823fe69b080e