blob: 342255e0d0e30cfd8de4f63fe368fe19dd3972d1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
task = {}
tasks = {}
task.add = (co) ->
tasks[co] = true
task.pump = () ->
for task, _ in pairs tasks
if coroutine.status(task) ~= "dead"
succ, err = coroutine.resume(task)
if not succ
error(debug.traceback(task, err))
else
tasks[task] = nil
task.await = (co) ->
if tasks[co]
coroutine.yield!
task.node = am.group!
task.node\action(() ->
task.pump!
)
task
|