Events: Difference between revisions
Content added Content deleted
(Added zkl) |
|||
Line 691: | Line 691: | ||
vwait X |
vwait X |
||
puts "received event"</lang> |
puts "received event"</lang> |
||
=={{header|zkl}}== |
|||
zkl provides an Atomics library for things like this. Events are async, waiting for an event doesn't poll. |
|||
<lang zkl>var event=Atomic.Bool(); // False |
|||
// create thread waiting for event |
|||
fcn(event){event.wait(); println(vm," ping!")}.launch(event); |
|||
Atomic.sleep(1); |
|||
event.set(); |
|||
println("done")</lang> |
|||
{{out}} |
|||
<pre> |
|||
// snooze |
|||
done // setting is fast, receiving maybe not so |
|||
VM#4 ping! |
|||
// and thread 4 exits |
|||
</pre> |
|||
I ran this from the REPL so I didn't have to worry about the main thread exiting and nuking the child thread. |
|||
{{omit from|GUISS}} |
{{omit from|GUISS}} |