Events: Difference between revisions

Content added Content deleted
(Nimrod -> Nim)
Line 475: Line 475:
discard p[0].read(addr p[1], 1)
discard p[0].read(addr p[1], 1)
echo "received signal from pipe"</lang>
echo "received signal from pipe"</lang>


=={{header|Oforth}}==

An event is often implemented with a control channel. A task is waiting for a object on a channel. When the event occurs, another task sends an object on this channel.

<lang Oforth>func: anEvent
{
| ch |
Channel new ->ch
#[ ch receive "Ok, event is signaled !" println ] &
System sleep(1000)
ch send($myEvent)
}
</lang>

An emitter is general implementation for handling events : an emitter waits for events emitted and launches listeners on those events.
<lang Oforth>func: anEvent2
{
| e |
Emitter new(null) ->e
e onEvent($myEvent, #[ "Ok, event is signaled !" println ])
System sleep(1000)
e emit($myEvent)
}</lang>


=={{header|Oz}}==
=={{header|Oz}}==