mirror of
https://github.com/wren-lang/wren.git
synced 2026-01-16 20:28:04 +01:00
27 lines
561 B
Plaintext
27 lines
561 B
Plaintext
class Scheduler {
|
|
static add(callable) {
|
|
if (__scheduled == null) __scheduled = []
|
|
|
|
__scheduled.add(Fiber.new {
|
|
callable.call()
|
|
runNextScheduled_()
|
|
})
|
|
}
|
|
|
|
// Called by native code.
|
|
static resume_(fiber) { fiber.transfer() }
|
|
static resume_(fiber, arg) { fiber.transfer(arg) }
|
|
|
|
static runNextScheduled_() {
|
|
if (__scheduled == null || __scheduled.isEmpty) {
|
|
return Fiber.suspend()
|
|
} else {
|
|
return __scheduled.removeAt(0).transfer()
|
|
}
|
|
}
|
|
|
|
foreign static captureMethods_()
|
|
}
|
|
|
|
Scheduler.captureMethods_()
|