* thread.c (rb_thread_wakeup_alive): split from rb_thread_wakeup.

merged from r13476.  c.f. [ruby-core:31320]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28660 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2010-07-17 04:04:51 +00:00
Родитель 3f01f3b6db
Коммит c04d79f867
3 изменённых файлов: 16 добавлений и 1 удалений

Просмотреть файл

@ -1,3 +1,8 @@
Sat Jul 17 13:04:45 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
* thread.c (rb_thread_wakeup_alive): split from rb_thread_wakeup.
merged from r13476. c.f. [ruby-core:31320]
Sat Jul 17 10:07:52 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
* lib/test/unit.rb: MiniTest::Unit is different class from

Просмотреть файл

@ -333,6 +333,7 @@ void rb_thread_sleep(int);
void rb_thread_sleep_forever(void);
VALUE rb_thread_stop(void);
VALUE rb_thread_wakeup(VALUE);
VALUE rb_thread_wakeup_alive(VALUE);
VALUE rb_thread_run(VALUE);
VALUE rb_thread_kill(VALUE);
VALUE rb_thread_create(VALUE (*)(ANYARGS), void*);

Просмотреть файл

@ -1546,12 +1546,21 @@ rb_thread_exit(void)
VALUE
rb_thread_wakeup(VALUE thread)
{
if (!RTEST(rb_thread_wakeup_alive(thread))) {
rb_raise(rb_eThreadError, "killed thread");
}
return thread;
}
VALUE
rb_thread_wakeup_alive(VALUE thread)
{
rb_thread_t *th;
GetThreadPtr(thread, th);
if (th->status == THREAD_KILLED) {
rb_raise(rb_eThreadError, "killed thread");
return Qnil;
}
rb_threadptr_ready(th);
if (th->status != THREAD_TO_KILL) {