• N
    process.c: implement rb_f_system without toggling ruby_nocldwait · f7c0cc36
    normal 提交于
    Following how mjit_worker.c currently works, rb_f_system
    now ensures the VM-wide waitpid lists is locked before
    creating a new process via fork/vfork.
    
    This ensures other rb_waitpid callers cannot steal work and
    there are no possible race conditions from toggling
    ruby_nocldwait without the use of atomics.
    
    This sets us up for implementing MJIT process management
    logic using normal Ruby APIs prepares us for VM-wide
    asynchronous/event-base waitpid which can allow MJIT to
    work without worker threads.
    
    Take 2: set waitpid_state.pid on platforms w/o fork.
    
    git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65437 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
    f7c0cc36
internal.h 68.4 KB