Как обнаружить и быстро выполнить функцию 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 мсек. В этой функции возобновить сопрограмму..

В сопрограмме. Вы можете читать входящие данные в цикле и давать, если не завершено.

Пример объясняет это хорошо..

Удачи.. Ф.

Другие вопросы по тегам