Data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 7387c8f97b
commit cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions

View file

@ -0,0 +1,54 @@
# Simple task framework built from coroutines
proc pause ms {
after $ms [info coroutine];yield
}
proc task {name script} {
coroutine $name apply [list {} \
"set ::tasks(\[info coro]) 1;$script;unset ::tasks(\[info coro])"]
}
proc waitForTasksToFinish {} {
global tasks
while {[array size tasks]} {
vwait tasks
}
}
# Make an Ada-like event class
oo::class create Event {
variable waiting fired
constructor {} {
set waiting {}
set fired 0
}
method wait {} {
while {!$fired} {
lappend waiting [info coroutine]
yield
}
}
method signal {} {
set wake $waiting
set waiting {}
set fired 1
foreach task $wake {
$task
}
}
method reset {} {
set fired 0
}
}
# Execute the example
Event create X
task A {
puts "waiting for event"
X wait
puts "received event"
}
task B {
pause 1000
puts "signalling X"
X signal
}
waitForTasksToFinish

View file

@ -0,0 +1,4 @@
after 1000 set X signalled
puts "waiting for event"
vwait X
puts "received event"