Lorsque le Le En réalité, je veux que cela vérifie si une connexion est faite, sinon elle continue le fil. Cependant, si j'appelle Quel est le bon moyen de faire ça? Merci. P> NETCONN_ACCEPT () CODE> ou
NETCONN_RECV () CODE> La fonction est appelée, si nous utilisons un RTO, il bloquera le thread. et attendez une connexion jusqu'à l'heure ou pour toujours, dépend du paramètre de
lwip_so_rcvtime0 code>. La durée du délai d'attente est égale au
sys_arch_timeout code>. P>
sys_arch_timeout code> est défini comme 0xffffffff em> dans le noyau incluent une partie de la pile LWIP, donc je pense que cela ne devrait pas être changé. P>
netconn_accept () code>, il bloquera simplement le thread et attendra là-bas pour toujours (ou très longtemps) ... je ne veux pas que Jsut modifie la valeur définie de
SYS_ARCH_TIMEOUT CODE> parce que j'ai besoin d'un délai différent dans différentes situations ... p>
4 Réponses :
Le sondage pour la connexion TCP (ou l'acceptation) est généralement une mauvaise pratique. Envisagez de reproduire un nouveau fil dédié exclusivement à l'appel NetConn_Accept () Blocking. P>
Je comprends les limites d'utiliser des rtoses, mais le frai d'un seul fil d'assistance avec un espace de pile minimal ne devrait pas être un problème majeur. P>
Je crois que la mise en œuvre d'une solution à la classique Producteur-consommateur Problème n'est pas que dur. p>
Si vous parlez de Freertos, il a tous les outils nécessaires - Semaphores et threads. P>
Faire un nouveau fil essayant de faire cette connexion. Tant qu'il n'est pas connecté, placez le fil en veille pendant quelque temps afin que les RTO puissent faire un commutateur de contexte! (Passez à une autre tâche) p>
N'utilisez pas du tout l'API de blocage. La pile LWIP fournit une API indigène, non bloquante, entraînée par des événements, qui est plus efficace que le blocage et ne nécessite pas de RTO de blocage. Affiche une vidéo YouTube (à http://youtu.be/mbk5wj_8jec ) montre comment cette API a été utilisée dans un Système en temps réel basé sur la framework de la machine d'état QP. P>
Vous pouvez utiliser la fonction par exemple. (Erreur de manipulation laissée sur Nouveau, lier, écouter de simplicité) p> puis appelle à accepter sera retarder le maximum de 1 ms: p> netconn_set_recvtimeout code> pour définir le délai d'attente sur le socket d'écoute sur quelque chose de petit, par exemple 1ms.
Je ne connais pas les spécificités de LwIP, mais il a-t-il un concept de prises non bloquantes ou d'une fonction code> SELECT CODE> -ILE?
La mise en œuvre des sockets BSD en LWIP utilise vraiment un espace supplémentaire que OP pourrait ne pas être capable de se permettre. 64kb de RAM n'est pas un grand espace pour tout.
@ViktorLatTypov Comment savez-vous que je n'ai que 64kb RAM ?? Je vous connais...?
Je doute que, j'en ai juste assez de Freertos moi-même :)))