Actions
Bug #17506
closedRactor isolation broken by ThreadGroup
Bug #17506:
Ractor isolation broken by ThreadGroup
Description
Ractors currently share the ThreadGroup.
This doesn't seem very useful as there is no possible communication between the Threads of different Ractors.
It is also an isolation error:
ThreadGroup.attr_accessor :foo
var = Thread.current.group.foo = [:example]
Ractor.new { Thread.current.group.foo << [:oops] }.take
var # => [:example, [:oops]]
Should Ractor.new create a new ThreadGroup? Should ThreadGroup not have (non-shareable) instance variables? Or should Ractor.new { Thread.current.group }.take be nil? See also https://bugs.ruby-lang.org/issues/17505 about nil.
Note that Ractor respects the ThreadGroup's state:
Thread.current.group.enclose
Ractor.new { Thread.current.group.add(Thread.current) }.take # => can't move to the enclosed thread group
Thread.current.group.freeze
Ractor.new {} # => ThreadError (can't start a new thread (frozen ThreadGroup))
I am not sure what is the best behavior as I don't have enough experience with how ThreadGroups are used, especially enclosed ThreadGroups.
Actions