forked from Mirror/wren
Now that I'm starting to write a real async scheduler on top of Wren's basic fiber API, I have a better feel for what it needs. It turns out run() is not it. - Remove run() methods. - Add transfer() which leaves the caller of the invoked fiber alone. - Add suspend() to return control to the host application. - Add Timer.schedule() to start a new independently scheduled fiber. - Change Timer.sleep() so that it only transfers control to explicitly scheduled fibers, not any one.
13 lines
269 B
Plaintext
13 lines
269 B
Plaintext
var main = Fiber.current
|
|
|
|
var fiber = Fiber.new {
|
|
IO.print("transferred")
|
|
IO.print(main.transfer())
|
|
IO.print("called")
|
|
}
|
|
|
|
fiber.transfer() // expect: transferred
|
|
IO.print("main") // expect: main
|
|
fiber.call() // expect: null
|
|
// expect: called
|