Issue #17310 has been updated by Eregon (Benoit Daloze).


Sorry for the side discussion.

I think this is the important point to discuss:

Eregon (Benoit Daloze) wrote in #note-6:
> I think (2) is a better solution.
> A Ractor should always be able to send messages while it's alive.

I think in some actor models `send` is considered safe and never raising an exception, or only raising if the receiver is not alive.
`close_outgoing` seems to break that guarantee, because it might raise even if the receiver is alive.

----------------------------------------
Bug #17310: Closed ractors should die
https://bugs.ruby-lang.org/issues/17310#change-88481

* Author: marcandre (Marc-Andre Lafortune)
* Status: Closed
* Priority: Normal
* Assignee: ko1 (Koichi Sasada)
* ruby -v: ruby 3.0.0dev (2020-11-07T21:47:45Z master 2f12af42f7) [x86_64-darwin18]
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN
----------------------------------------
While backporting Ractors, I found this issue:

```ruby
10.times { Ractor.new { sleep(0.1) } }
sleep(1)
puts Ractor.count # => 1, ok
# but:
10.times { Ractor.new { sleep(0.1) }.close }
sleep(1)
Ractor.count # => 11, should be 1
```




-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>