【发布时间】:2021-08-08 16:20:53
【问题描述】:
我目前正在开发一个 lua 程序。 我想在 Minecraft 中使用一个名为“OpenComputers”的 mod,它允许在模拟系统上使用 lua 脚本。 我正在处理的程序相对简单:你有一个控制台,你输入一个命令来控制一台机器。 它看起来像这样:
while(true) do
io.write("Enter command\n>")
cmd = io.read()
-- running code to process the command
end
但问题是:我需要在后台运行一个例程来检查机器提供的数据。
while(true) do
-- checking and reacting
end
我怎样才能做到这一点?
- 等待
io.read()时无法跳转到协程 - 在有人使用命令后检查是不够的(有时我几天不使用它,但我仍然需要密切关注它)
我对 lua 比较陌生,所以请尝试提供一个简单的解决方案,并且 - 如果可能的话 - 一个不依赖第三方工具的解决方案。
谢谢你:)
【问题讨论】:
-
就我所理解的协程而言,它们是可以通过 yield() 暂停并在稍后继续的函数。我需要的是在主循环运行时运行的东西。类似于 C# 中的第二个线程。
-
可能有一个 os.Event 可以监听看看输入是否可用
-
其实是有的。另外,@BDevGW,线程在 opencomputers 中的使用相当有限,如果您是 opencomputers 的新手,我不建议您使用它们......您应该使用事件处理(或计时器)和协程。
标签: lua minecraft opencomputers