📅  最后修改于: 2023-12-03 15:17:27.444000             🧑  作者: Mango
在 Lua 中,wait()
是被用来在协程中挂起当前线程的函数。wait()
会阻塞当前线程,直到一个 signal
信号被触发。
通常情况下,wait()
函数常用于协程控制,实现一些比较复杂的流程与逻辑。
在 Lua 中,wait()
函数的用法相对简单,只需要将其放在协程中即可。示例代码如下:
function coro_example()
print("starting coroutine")
wait()
print("resuming coroutine")
end
co = coroutine.create(coro_example)
coroutine.resume(co) -- 输出 "starting coroutine"
coroutine.resume(co) -- 程序停止在这里执行 wait()
-- 这里需要发出信号,才能使程序继续运行
coroutine.resume(co) -- 输出 "resuming coroutine"
wait()
函数没有参数。
wait()
函数没有返回值。
function print_first()
print("First line")
wait()
print("Second line")
end
function print_second()
print("Third line")
wait()
print("Fourth line")
end
co1 = coroutine.create(print_first)
co2 = coroutine.create(print_second)
coroutine.resume(co1)
coroutine.resume(co2)
-- 执行完第一行输出后,程序会停止在co1的wait()执行
-- 需要在wait()执行之后向协程发出一个信号,才能继续执行
coroutine.resume(co1) -- 输出 "Second line"
-- co1的操作完成后,程序又会停止在co2的wait()执行
coroutine.resume(co2) -- 输出 "Fourth line"
在编写程序时需要确保所有的协程都能够轮流执行,否则会导致卡死。
另外,程序中也需要确保每个wait()都会被唤醒,否则也会导致卡死。