我正在尝试创建一个调度多个协同程序的调度程序。调度员需要暂停协程,我无法弄清楚如何做到这一点。
更新 我打算从外面暂停协程,而不是杀人。
答案 0 :(得分:1)
你可以通过设置一个从该钩子调用error()
的调试钩子来杀死一个协同程序。下次调用钩子时,它将触发error()
调用,这将中止协程:
local co = coroutine.create(function()
while true do print(coroutine.yield()) end
end)
coroutine.resume(co, 1)
coroutine.resume(co, 2)
debug.sethook(co, function()error("almost dead")end, "l")
print(coroutine.resume(co, 3))
print(coroutine.status(co))
打印:
2
3
false coro-kill.lua:6: almost dead
dead
答案 1 :(得分:0)
在用document.getElementById('map_canvas').firstChild.appendChild(tt);
设置的钩子中返回true时将产生的库
该库足以创建多任务lua系统,只需在代码的第一个位置运行debug.sethook(co, function() return true end, "y")
,即可在git上获得更多信息
答案 2 :(得分:-1)
使用 coroutine.yield(coroutine-you-want-to-pause)