summaryrefslogtreecommitdiff
path: root/include/ruby/ractor.h
diff options
context:
space:
mode:
authorKoichi Sasada <[email protected]>2020-11-28 04:39:09 +0900
committerKoichi Sasada <[email protected]>2020-12-01 09:39:30 +0900
commit67693d8d806e67d6e50b303dd0be6ec06b81c853 ()
treeb0947049393400f046ac554b7f3573cd73b80af0 /include/ruby/ractor.h
parente79f1941b29738d95b42f8cb5bdb159e7138cf49 (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: Merged: https://.com/ruby/ruby/pull/3822
-rw-r--r--include/ruby/ractor.h19
1 files changed, 19 insertions, 0 deletions
@@ -12,6 +12,14 @@
* file COPYING are met. Consult the file for details.
*/
RUBY_SYMBOL_EXPORT_BEGIN
RUBY_EXTERN VALUE rb_cRactor;
@@ -22,6 +30,17 @@ void rb_ractor_stdin_set(VALUE);
void rb_ractor_stdout_set(VALUE);
void rb_ractor_stderr_set(VALUE);
RUBY_SYMBOL_EXPORT_END
#define RB_OBJ_SHAREABLE_P(obj) FL_TEST_RAW((obj), RUBY_FL_SHAREABLE)