2010-06-17 5 views
1

Je crée un client IRC à l'aide de LUA. J'utilise les bibliothèques fournies avec "Lua for Windows". Donc j'utilise luasocket pour les communications et IUP pour les bits de l'interface utilisateur.Création d'un délai en lua

Le problème que j'ai est que je suis coincé dans une boucle quand je lis les E/S. J'ai essayé la minuterie dans IUP mais cela ne semblait pas fonctionner.

Je cherchais un moyen de retarder la boucle de lecture IO.

Je définis l'heure de la lecture sur 0 et cela a fonctionné.

Répondre

2

Vous effectuez probablement une lecture bloquante sur un socket TCP dans le thread graphique. Cela bloquera toute votre demande si vous ne recevez pas les données attendues en temps opportun. Effectuez les E/S socket dans un thread séparé (voir Lua Lanes) ou utilisez des E/S non bloquantes (voir settimeout).

Le Kepler Project est une excellente source d'informations sur les applications réseau avec Lua, mais il est axé sur les applications Web par rapport à un client IRC. Par exemple, la bibliothèque Copas utilise Lua coroutines pour gérer plusieurs connexions TCP.

Maintenant si vous vouliez vraiment savoir comment créer un retard dans Lua, alors l'article Sleep Function dans le lua-users wiki devrait fournir toutes les informations dont vous avez besoin.

+0

Merci de laisser tomber le temps sur les lectures aidé. Donc pas besoin de retard. – icefenix