Граф коммитов

27 Коммитов

Автор SHA1 Сообщение Дата
nobu 3935f2ae6e marshal.c: undumpable hidden objects
* marshal.c (w_object): internal objects are not dumpable.
  [ruby-core:61677] [Bug #9674]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45424 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-26 02:20:52 +00:00
nobu 1dd527012b thread.c: undumpable
* 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
2014-03-26 02:20:26 +00:00
normal 2d603f9fee ext/thread: SizedQueue#max= wakes up waiters properly
* 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
2014-02-05 23:35:06 +00:00
nobu 06d2e8aaf7 thread/thread.c: no dup
* 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
2014-01-22 06:59:41 +00:00
glass 79e69ec715 * ext/thread/thread.c (rb_szqueue_clear): notify SZQUEUE_WAITERS
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
2014-01-14 12:14:48 +00:00
charliesome 64926db998 * ext/thread/thread.c (rb_szqueue_push): check GET_SZQUEUE_WAITERS
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
2014-01-13 03:18:38 +00:00
ktsj 113b1c76fc * variable.c (classname): the name of class that has
non class id should not be nil. This bug was introduced
  in r36577.

* test/thread/test_cv.rb: test for change.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42867 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-07 04:58:38 +00:00
glass e334bb2ce5 * common.mk: use RUNRUBY instead of MINIRUBY because MINIRUBY can't
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
2013-09-06 15:15:07 +00:00
nobu 3176b04d22 * remove trailing spaces.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39715 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-11 00:29:00 +00:00
kosaki 1c47bd88c1 * lib/thread.rb (Queue#push): return self.
* lib/thread.rb (Queue#clear): ditto.
* lib/thread.rb (SizedQueue#push): ditto.
* test/thread/test_queue.rb: add tests for the above.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39713 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-10 23:01:21 +00:00
kosaki 19e0d7c18e * test/thread/test_queue.rb (TestQueue#test_thr_kill): reduce
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
2013-03-10 04:00:44 +00:00
kosaki 89ff44e22e * test/ruby/test_thread.rb: move ConditionVariable related test
into test/thread/test_cv.rb.
* test/thread/test_cv.rb: new file.
* test/thread/test_cv.rb (test_condvar_empty_signal): new tests.
* test/thread/test_cv.rb (test_condvar_empty_broadcast): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38111 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-01 08:29:09 +00:00
kosaki 1f1db611b9 * lib/thread.rb (ConditionVariable): use hash instead of array for
@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
2012-12-01 08:28:44 +00:00
kosaki 3357d88ada * lib/thread.rb (SizedQueue#pop): rewrite by using ConditionVariable.
* lib/thread.rb (SizedQueue#push): ditto.
* lib/thread.rb (SizedQueue#max): ditto.
* lib/thread.rb (Queue#pop): ditto.
* lib/thread.rb (Queue#push): ditto.

* lib/thread.rb (SizedQueue#num_waiting): adopt the above changes.
* lib/thread.rb (SizedQueue#initialize): ditto.
* lib/thread.rb (Queue#num_waiting): ditto.
* lib/thread.rb (Queue#initialize): ditto.
* test/thread/test_queue.rb (test_sized_queue_and_wakeup): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38087 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-11-30 18:55:09 +00:00
shirosaki 4d4800a5a7 envutil.rb: kill child process when timeout
* 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
2012-09-29 11:19:11 +00:00
kosaki 7198053a49 * lib/thread.rb (Queue#pop): Fixed double registration issue when
mutex.sleep is interrupted. [Bug #5258] [ruby-dev:44448]
* lib/thread.rb (SizedQueue#push): ditto.

* test/thread/test_queue.rb (test_sized_queue_and_wakeup,
test_queue_pop_interrupt, test_sized_queue_pop_interrupt,
test_sized_queue_push_interrupt): new tests.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36938 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-09-09 12:32:33 +00:00
kosaki 2248a8ce64 * lib/sync.rb (Sync_m#sync_lock): Fixed wakeup/raise unsafe code.
Patched by Masaki Matsushita. [Bug #5355] [ruby-dev:44521]

* test/thread/test_sync.rb (test_sync_lock_and_wakeup,
  test_sync_upgrade_and_wakeup, test_sync_lock_and_raise):
  new test.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36936 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-09-09 11:34:47 +00:00
akr dc42e8bbe8 refine message for test_thr_kill.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34110 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-12-23 07:55:39 +00:00
akr e89bebdab4 * test/thread/test_queue.rb (test_thr_kill): show the number of loop
run when the test failed.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34107 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-12-23 01:15:35 +00:00
naruse 92c5d84a40 Decrease timeout limit.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34101 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-12-22 14:58:16 +00:00
nagachika 07fa1c9144 * test/thread/test_queue.rb (test_thr_kill): extend timeout.
this test takes a long time at slow machine.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34065 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-12-18 00:46:32 +00:00
naruse 24c3766624 The test added in r34034 needs to run thousands of times.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34037 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-12-14 02:26:17 +00:00
naruse 8cec0d5653 Add test for [Bug #5343] [ruby-core:39634]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34034 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-12-14 00:23:43 +00:00
nagachika a46d29bb4e * lib/thread.rb (SizedQueue#max=) raise ArgumentError if max is not
positive number. patch by Masaki Matsushita.
  [ruby-dev:44449] [Bug #5259]

* test/thread/test_queue.rb (test_sized_queue_initialize,
  test_sized_queue_assign_max): add tests for it.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33170 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-09-03 09:46:51 +00:00
nobu 3a47cf3395 * remove trailing spaces.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31573 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-15 11:55:52 +00:00
kazu a350d0afc5 * test/thread/test_queue.rb (TestQueue#grind): fix typos.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27370 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-16 22:45:45 +00:00
mame 93c5002a7c * lib/thread.rb (Queue#push, #pop, SizedQueue#push, #pop): remove
code that kicks waiting thread twice, which caused race and
  deadlock.  [ruby-core:25537]

* test/thread/test_queue.rb: added.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27356 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-04-16 11:10:08 +00:00