Events: Difference between revisions

362 bytes added ,  10 years ago
No edit summary
Line 396:
==Icon and {{header|Unicon}}==
 
The following only works in Unicon:. The example illustrates the multiple tasks can
receive the same event:
<lang unicon>record Event(cond, value)
 
Line 402 ⟶ 403:
event := Event(condvar())
t1 := thread {
write("WaitingTask one waiting for event....")
critical event.cond: while /(event.value) do wait(event.cond)
write("EventTask occurredone received event.")
}
t2 := thread {
delaywrite(1000"Task two waiting for event....")
critical event.cond: while /(event.value) :=do "yes"wait(event.cond)
write("SignallingTask two received event.")
signal(event.cond)
}
delay(1000) # Let main thread post the event.
event.value := "yes"
write("Signalling event.")
signal(event.cond,0)
every wait(t1|t2)
end</lang>
Line 418 ⟶ 422:
<pre>
->event
WaitingTask two waiting for event....
Task one waiting for event....
Signalling event.
Task two received event.
Event occurred.
Task one received event.
->
</pre>