mirror of
https://github.com/ruby/ruby.git
synced 2025-08-23 04:55:21 +02:00
rb_ext_ractor_safe() to declare ractor-safe ext
C extensions can violate the ractor-safety, so only ractor-safe C extensions (C methods) can run on non-main ractors. rb_ext_ractor_safe(true) declares that the successive defined methods are ractor-safe. Otherwiwze, defined methods checked they are invoked in main ractor and raise an error if invoked at non-main ractors. [Feature #17307]
This commit is contained in:
parent
8247b8edde
commit
182fb73c40
Notes:
git
2020-12-01 15:44:43 +09:00
7 changed files with 267 additions and 35 deletions
2
ractor.c
2
ractor.c
|
@ -21,6 +21,7 @@ static VALUE rb_eRactorRemoteError;
|
|||
static VALUE rb_eRactorMovedError;
|
||||
static VALUE rb_eRactorClosedError;
|
||||
static VALUE rb_cRactorMovedObject;
|
||||
VALUE rb_eRactorUnsafeError;
|
||||
|
||||
VALUE
|
||||
rb_ractor_error_class(void)
|
||||
|
@ -1670,6 +1671,7 @@ Init_Ractor(void)
|
|||
rb_eRactorRemoteError = rb_define_class_under(rb_cRactor, "RemoteError", rb_eRactorError);
|
||||
rb_eRactorMovedError = rb_define_class_under(rb_cRactor, "MovedError", rb_eRactorError);
|
||||
rb_eRactorClosedError = rb_define_class_under(rb_cRactor, "ClosedError", rb_eStopIteration);
|
||||
rb_eRactorUnsafeError = rb_define_class_under(rb_cRactor, "UnsafeError", rb_eRactorError);
|
||||
|
||||
rb_cRactorMovedObject = rb_define_class_under(rb_cRactor, "MovedObject", rb_cBasicObject);
|
||||
rb_undef_alloc_func(rb_cRactorMovedObject);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue