{"body":"so payonel maybe I should just do something like: -- S3IX Scheduler\n\nlocal function run(state)\n  coroutine.yield() -- Yield first optimization\n  local ev_args = computer.pullSignal(0)\n  local ev_name = table.remove(ev, 1)\n\n  -- Environment for processes:\n  local env = {}\n\n  local create_container(fn)\n    local container = {\n      co = coroutine.create(fn)\n    }\n\n    return container\n  end\n\n  -- Register a new process container containing function callback as co:\n  function env.spawn(fn)\n    container = create_container(fn)\n    state[\"processes\"][container] = true\n  end\n\n  return run(state)\nend\n\n-- Setup:\nrun({\n  [\"outbox\"]    = {}, -- Messages waiting to be delivered to processes\n  [\"processes\"] = {}, -- Process store\n  [\"ready\"]     = {}  -- Processes ready for work\n})\n","name":"","extension":"txt","url":"https://www.irccloud.com/pastebin/W2ZBrS0M","modified":1522271490,"id":"W2ZBrS0M","size":781,"lines":33,"own_paste":false,"theme":"","date":1522271490}