所以我一直在使用协同程序一段时间,我在尝试制作我想要的东西时遇到了麻烦。我想要一个我可以访问objectivley创建对象作为任务或进程的类。我认为向你展示代码是无关紧要的,也不是我想要的。所以我只是想告诉你我想要的功能
local task1 = Tasker.newTask(function()
while true do
print("task 1")
end
end)
local task2 = Tasker.newTask(function()
while true do
print("task 2")
end
end)
task1:start()
task2:start()
这样我可以同时运行多个任务,我希望能够在运行时期间添加新任务。另外,我想要一种方法来停止任务,例如:
task2:stop()
但是我不希望stop命令完全删除任务实例,只是停止任务本身以便我可以调用
task2:start()
然后也许我可以使用命令删除它。
task2:delete()
这将非常有用,如果您需要更多信息,请向我们寻求帮助。我也在手机上发布了这个,所以可能存在拼写错误和格式化问题
答案 0 :(得分:2)
Lua本身不支持操作系统线程,即抢先式多任务处理。
你可以使用协同程序来实现你自己的合作“线程”,但每个线程必须放弃控制权,然后才能做任何事情。
local task1 = Tasker.newTask(function()
while true do
print("task 1")
coroutine.yield()
end
end)
local task2 = Tasker.newTask(function()
while true do
print("task 2")
coroutine.yield()
end
end)
你的Tasker类必须接受任务函数并将其包装在协程中,然后在它们上面调用coroutine.resume
。像stop
和start
这样的操作会在任务上设置标志,告诉Tasker是否在主循环中恢复该特定协程。
答案 1 :(得分:0)
您可以通过C执行此操作。您可以使用LuaLanes and Linda objects。