Как обнаружить и быстро выполнить функцию lua, которая слишком долго реагирует? - PullRequest
1 голос
/ 22 июня 2011

Я использую Corona SDK, чтобы сделать простое приложение, требующее luasocket.Corona SDK поддерживает luasocket для выполнения асинхронного http req.

Но я хочу использовать UDP от luasocket.Метод UDP receive () от luasocket блокируется до получения сообщения.

Corona SDK не поддерживает LuaLanes.Поэтому невозможно прослушать сообщение udp в другом потоке.

Так что я просто думаю, есть ли какой-нибудь метод / прием / обходной путь в lua для обнаружения и отмены функции, в данном случае udp.receive (), занимает слишком много времени, чтобы ответить?

Заранее спасибо

Ответы [ 2 ]

3 голосов
/ 29 июня 2011

Да .. Сопрограммы и события .. http://www.lua.org/pil/9.4.html

Запустить событие таймера, которое говорит, что вызывает функцию каждые 100 мсек. В этой функции возобновить сопрограмму

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

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

Удачи .. Ф.

2 голосов
/ 22 июня 2011

Вы установили время ожидания обновления?

См. http://w3.impa.br/~diego/software/luasocket/udp.html внизу страницы.

...