aboutsummaryrefslogtreecommitdiffstats
path: root/thread_pthread.c
diff options
context:
space:
mode:
authornormal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-10-30 01:34:48 +0000
committernormal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-10-30 01:34:48 +0000
commitf7c0cc36920a4ed14a3ab1ca6cfdf18ceff1e5d5 (patch)
treeb177b1185abd1ceaf901d82694a2f1757a59da57 /thread_pthread.c
parentfbee3b8f75a881072fadb215dd1133e9a5cee30f (diff)
downloadruby-f7c0cc36920a4ed14a3ab1ca6cfdf18ceff1e5d5.tar.gz
process.c: implement rb_f_system without toggling ruby_nocldwait
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
Diffstat (limited to 'thread_pthread.c')
0 files changed, 0 insertions, 0 deletions