Cancelable Spawned Coroutines
9996 Views
-
using { /Verse.org/Concurrency } SpawnRoutine<public>(Func : type{_()<suspends>:void}):routine = Routine := routine{Func := Func} Routine.Start() return Routine routine<public> := class(): Func<public> : type{_()<suspends>:void} Event<protected> : event() = event(){} var MaybeTask<protected> : ?task(void) = false var _IsRunning<protected> : logic = false Start<internal>():void = Task := spawn {RunRoutine()} set MaybeTask = option {Task} RunRoutine<protected>()<suspends>: void = set _IsRunning = true race: Func() Event.Await() set _IsRunning = false Cancel<public>():void = Event.Signal() GetTask<public>()<decides><transacts>:task(void) = MaybeTask? IsRunning<public>()<decides><transacts>:void = _IsRunning?
You're reading a preview
The full reference is free for BrainDeadGuild Discord members — sign in to read it all, or open the original at the source.
Sign in with your BrainDead.TV / BrainDeadGuild Discord account for full access.