Project

General

Profile

« Previous | Next » 

Revision 450463d5

Added by ko1 (Koichi Sasada) over 13 years ago

  • thread.c, vm_core.h: make gvl_acquire/release/init/destruct
    APIs to modularize GVL implementation.
  • thread_pthread.c, thread_pthread.h: Two GVL implementations.
    (1) Simple locking GVL which is same as existing GVL.
    (2) Wake-up queued threads. The wake-up order is simple FIFO.
    (We can make several queues to support exact priorities, however
    this causes some issues such as priority inversion and so on.)
    This impl. prevents spin-loop (*1) caused on SMP environemnts.
    *1: Only one Ruby thread acqures GVL again and again.
    Bug #2359 [ruby-core:26694]
  • thread_win32.c, thread_win32.h: Using simple lock
    not by CRITICAL_SECTION but by Mutex.
    Bug #3890 [ruby-dev:42315]
  • vm.c (ruby_vm_destruct): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29956 b2dd03c8-39d4-4d8f-98ff-823fe69b080e