diff options
author | Koichi Sasada <ko1@atdot.net> | 2020-11-28 04:39:09 +0900 |
---|---|---|
committer | Koichi Sasada <ko1@atdot.net> | 2020-12-01 09:39:30 +0900 |
commit | 67693d8d806e67d6e50b303dd0be6ec06b81c853 (patch) | |
tree | b0947049393400f046ac554b7f3573cd73b80af0 /gc.c | |
parent | e79f1941b29738d95b42f8cb5bdb159e7138cf49 (diff) |
ractor local storage C-API
To manage ractor-local data for C extension, the following APIs
are defined.
* rb_ractor_local_storage_value_newkey
* rb_ractor_local_storage_value
* rb_ractor_local_storage_value_set
* rb_ractor_local_storage_ptr_newkey
* rb_ractor_local_storage_ptr
* rb_ractor_local_storage_ptr_set
At first, you need to create a key of storage by
rb_ractor_local_(value|ptr)_newkey().
For ptr storage, it accepts the type of storage,
how to mark and how to free with ractor's lifetime.
rb_ractor_local_storage_value/set are used to access a VALUE
and rb_ractor_local_storage_ptr/set are used to access a pointer.
random.c uses this API.
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/3822
Diffstat (limited to 'gc.c')
-rw-r--r-- | gc.c | 1 |
1 files changed, 1 insertions, 0 deletions
@@ -7273,6 +7273,7 @@ gc_marks_finish(rb_objspace_t *objspace) } rb_transient_heap_finish_marking(); + rb_ractor_finish_marking(); gc_event_hook(objspace, RUBY_INTERNAL_EVENT_GC_END_MARK, 0); |