一个函数能否确定它是否正在协程内运行?

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

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

有没有办法做到这一点?

原文链接 https://stackoverflow.com/questions/3562675

点赞
stackoverflow用户395243
stackoverflow用户395243

我应该在 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

2010-08-25 04:03:20