3
有沒有一種方法讓函數知道它是否在協程中運行?函數能否知道它是否在協程中運行?
例如,我有一個send_message()函數嘗試三次發送消息。每次嘗試之間都需要等待一秒鐘。如果這個函數是從協程中調用的,我想讓send_message()函數做一個coroutine.yield()作爲其wait-1秒循環的一部分。但是如果它不在協程中,那麼它應該執行POSIX usleep()。
有沒有辦法做到這一點?
有沒有一種方法讓函數知道它是否在協程中運行?函數能否知道它是否在協程中運行?
例如,我有一個send_message()函數嘗試三次發送消息。每次嘗試之間都需要等待一秒鐘。如果這個函數是從協程中調用的,我想讓send_message()函數做一個coroutine.yield()作爲其wait-1秒循環的一部分。但是如果它不在協程中,那麼它應該執行POSIX usleep()。
有沒有辦法做到這一點?
我應該在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