Как обнаружить и быстро выполнить функцию lua, которая слишком долго реагирует?
Я использую Corona SDK, чтобы сделать простое приложение, которое требует luasocket. Corona SDK поддерживает luasocket для выполнения асинхронного http req.
Но я хочу использовать UDP от luasocket. Метод UDP receive() от luasocket блокируется, пока не получит сообщение.
Corona SDK не поддерживает LuaLanes. Так что совершенно невозможно прослушать сообщение udp в другой ветке.
Поэтому я просто думаю, есть ли какой-нибудь метод / прием / обходной путь в lua для обнаружения и отмены, если функция, в данном случае udp.receive(), слишком долго реагирует?
заранее спасибо
2 ответа
Вы установили время ожидания обновления?
См. http://w3.impa.br/~diego/software/luasocket/udp.html внизу страницы.
Да.. Сопрограммы и события.. http://www.lua.org/pil/9.4.html
Вызывает событие таймера, которое говорит, что вызывает функцию каждые 100 мсек. В этой функции возобновить сопрограмму..
В сопрограмме. Вы можете читать входящие данные в цикле и давать, если не завершено.
Пример объясняет это хорошо..
Удачи.. Ф.