函数能否知道它是否在协程内运行?

时间:2010-08-25 03:28:53

标签: lua

有没有办法让函数知道它是否在协程中运行?

例如,我有一个send_message()函数,它尝试三次发送消息。在每次尝试之间需要等待一秒钟。如果从协程中调用此函数,我希望send_message()函数执行coroutine.yield()作为其wait-1秒循环的一部分。但如果它不在协程中,那么它应该做一个POSIX usleep()。

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:7)

我应该在Lua参考手册中看起来更好:coroutine.running()如果主线程调用则返回nil,这对于这种情况是完美的。

问的最初原因是我将coroutine.running()与coroutine.status()混合在一起。

请参阅:http://www.lua.org/manual/5.1/manual.html#pdf-coroutine.running 并且:http://www.lua.org/manual/5.1/manual.html#pdf-coroutine.status