Events: Difference between revisions
Content added Content deleted
m (→{{header|LFE}}: Tweaked for LFE) |
|||
Line 559: | Line 559: | ||
An event is often implemented with a control channel. A task is waiting for an object on the channel. When the event occurs, another task sends an object on this channel. |
An event is often implemented with a control channel. A task is waiting for an object on the channel. When the event occurs, another task sends an object on this channel. |
||
<lang Oforth> |
<lang Oforth>: anEvent |
||
{ |
|||
| ch | |
| ch | |
||
Channel new ->ch |
Channel new ->ch |
||
#[ ch receive "Ok, event is signaled !" println ] & |
#[ ch receive "Ok, event is signaled !" println ] & |
||
System sleep(1000) |
System sleep(1000) |
||
ch send($myEvent) |
ch send($myEvent) ;</lang> |
||
}</lang> |
|||
An emitter is a general implementation for handling events : an emitter waits for events emitted and launches listeners that are waiting for those events. |
An emitter is a general implementation for handling events : an emitter waits for events emitted and launches listeners that are waiting for those events. |
||
<lang Oforth> |
<lang Oforth>import: emitter |
||
{ |
|||
: anEvent2 |
|||
| e i | |
| e i | |
||
Emitter new(null) ->e |
Emitter new(null) ->e |
||
e onEvent($myEvent, #[ " |
e onEvent($myEvent, #[ "Event is signaled !" println ]) |
||
10 loop: i [ |
10 loop: i [ |
||
1000 System sleep |
|||
⚫ | |||
$myEvent e emit |
|||
}</lang> |
|||
] |
|||
⚫ | |||
=={{header|Oz}}== |
=={{header|Oz}}== |