Может ли функция знать, работает ли она внутри сопрограммы? - PullRequest
4 голосов
/ 25 августа 2010

Есть ли способ для функции узнать, выполняется ли она внутри сопрограммы?

Например, у меня есть функция send_message (), которая трижды пытается отправить сообщение.Между каждой попыткой нужно ждать одну секунду.Если эта функция вызывается из сопрограммы, я бы хотел, чтобы функция send_message () выполняла coroutine.yield () как часть своего цикла wait-1-second.Но если это не в сопрограмме, то вместо этого следует использовать функцию POSIX usleep ().

Есть ли способ сделать это?

1 Ответ

7 голосов
/ 25 августа 2010

Я должен был выглядеть лучше в справочном руководстве по 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...