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}}== |