diff options
author | Koichi Sasada <[email protected]> | 2020-12-08 00:42:20 +0900 |
---|---|---|
committer | Koichi Sasada <[email protected]> | 2020-12-09 01:40:38 +0900 |
commit | ee194af2aa170c0cb1bfd5fed4e84259a8150ece (patch) | |
tree | a65ce548fade86f8daddd6af525f4c665ca2f97d /ractor_core.h | |
parent | 2749123e213007e20d2f5e65ce941ff53feb4c76 (diff) |
re-layout rb_ractor_t
separate synchronization data and ractor local data.
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/3858
Diffstat (limited to 'ractor_core.h')
-rw-r--r-- | ractor_core.h | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/ractor_core.h b/ractor_core.h index 3f367ad559..c97dfcc85f 100644 --- a/ractor_core.h +++ b/ractor_core.h @@ -36,23 +36,20 @@ struct rb_ractor_waiting_list { rb_ractor_t **ractors; }; -struct rb_random_struct; // c.f. ruby/random.h - -struct rb_ractor_struct { +struct rb_ractor_sync { // ractor lock rb_nativethread_lock_t lock; #if RACTOR_CHECK_MODE > 0 VALUE locked_by; #endif + rb_nativethread_cond_t cond; // communication struct rb_ractor_queue incoming_queue; + struct rb_ractor_waiting_list taking_ractors; bool incoming_port_closed; bool outgoing_port_closed; - bool yield_atexit; - - struct rb_ractor_waiting_list taking_ractors; struct ractor_wait { enum ractor_wait_status { @@ -72,11 +69,15 @@ struct rb_ractor_struct { wakeup_by_retry, } wakeup_status; - struct rb_ractor_basket taken_basket; struct rb_ractor_basket yielded_basket; - - rb_nativethread_cond_t cond; + struct rb_ractor_basket taken_basket; } wait; +}; + +struct rb_ractor_struct { + struct rb_ractor_sync sync; + + bool yield_atexit; // vm wide barrier synchronization rb_nativethread_cond_t barrier_wait_cond; |