📜  lua 中的 wait()(1)

📅  最后修改于: 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()都会被唤醒,否则也会导致卡死。