|
- tTasks,nPid,nTimeout,cPid = {},1,1,0
- function os.spawn(f,n)
- tTasks[nPid] = {["c"]=coroutine.create(f),["n"]=n,["p"]=nPid}
- for k,v in pairs(tTasks[cPid] or {}) do
- tTasks[nPid][k] = tTasks[nPid][k] or v
- end
- nPid = nPid + 1
- return nPid - 1
- end
- function sched()
- while #tTasks > 0 do
- local tEv = {computer.pullSignal(nTimeout)}
- for k,v in pairs(tTasks) do
- if coroutine.status(v.c) ~= "dead" then
- cPid = k
- coroutine.resume(v.c,table.unpack(tEv))
- else
- tTasks[k] = nil
- end
- end
- end
- end
|