Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
24
Task/Events/E/events-1.e
Normal file
24
Task/Events/E/events-1.e
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
def makeEvent() {
|
||||
def [var fired, var firer] := Ref.promise()
|
||||
|
||||
def event {
|
||||
to signal() {
|
||||
firer.resolveRace(null) # all current and future wait()s will resolve
|
||||
}
|
||||
to reset() {
|
||||
if (firer.isDone()) { # ignore multiple resets. If we didn't, then
|
||||
# reset() wait() reset() signal() would never
|
||||
# resolve that wait().
|
||||
# create all fresh state
|
||||
def [p, r] := Ref.promise()
|
||||
fired := p
|
||||
firer := r
|
||||
}
|
||||
}
|
||||
to wait() {
|
||||
return fired
|
||||
}
|
||||
}
|
||||
|
||||
return event
|
||||
}
|
||||
16
Task/Events/E/events-2.e
Normal file
16
Task/Events/E/events-2.e
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
def e := makeEvent()
|
||||
|
||||
{
|
||||
when (e.wait()) -> {
|
||||
println("[2] Received event.")
|
||||
}
|
||||
println("[2] Waiting for event...")
|
||||
}
|
||||
|
||||
{
|
||||
timer.whenPast(timer.now() + 1000, def _() {
|
||||
println("[1] Signaling event.")
|
||||
e.signal()
|
||||
})
|
||||
println("[1] Waiting 1 second...")
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue