Open jsaak opened 11 months ago
reading the source of Task, i found this:
Fiber.scheduler.raise(@fib2, "Stop")
And it seems to be working fine. Any reason Fiber.raise works different?
The problem with Fiber.raise
is that it doesn't know how to schedule the original fiber that called it and it does an implicit transfer.
We should probably fix this in Ruby itself, so that it just works as expected.
Let me look into this issue in more detail this week.
Thanks! I am happy that you think it is a bug too. In the meantime i will use Fiber.scheduler.raise() .
(My program is a bit more complicated than the one i posted, i lost some hair figuring this out :)
If you check Fiber.scheduler.raise
you will see it handles the scheduling correctly.
I have still no idea how to stop a Fiber from running (unschedule). I was told that i can raise an exception, but it is not working as i hoped. Can you help me how to do that?
In this code i was expecting @fib1 to exit, but it does not exit ever.
Do I have any alternative options?