2009-07-27 5 views
2

J'ai une application qui ouvre une connexion avec 2 sockets (in et out) et je veux les faire travailler dans un thread. La raison pour laquelle je veux qu'ils soient dans un thread séparé est que je ne veux pas que mon application se bloque lorsque je reçois des données, et cela peut arriver n'importe quand tant que l'application est en cours d'exécution.Exécution d'un flux de socket dans un thread

Actuellement, j'ai une classe qui gère également la communication réseau et je cours cette classe dans un NSOperation, je ne suis pas sûr si c'est la meilleure solution.

Je ne suis pas très familier avec le filetage si les gars si vous pouviez me donner de l'aide, je serais très reconnaissant.

Merci

Répondre

2

D'abord, vous devez savoir que vous pouvez utiliser le même socket pour envoyer et recevoir des données - ils sont généralement bi-directionnel. Vous devriez être capable de partager une référence à la même socket parmi plusieurs threads d'exécution. Deuxièmement, à moins que vous ne receviez de grandes quantités de données et que vous ayez rencontré des problèmes de performance avec votre interface utilisateur, je retarderais l'optimisation pour cela. (Ne vous méprenez pas, c'est une bonne considération, mais l'optimisation prématurée est la racine de tous les maux, et plus simple est généralement mieux si elle fonctionne correctement.)

Troisièmement, NSOperation les objets sont "single-shot", ce qui signifie qu'une fois la méthode main terminée, la tâche d'opération ne peut plus être utilisée. Cela peut ou non être favorable à votre modèle de réseau. Vous pouvez également regarder NSThread. Le fait que vous ayez déjà la fonctionnalité "factorisée" est de bon augure pour votre design, quoi qu'il en soit. Enfin, le thread est un sujet complexe, mais un bon point de départ (en particulier pour Objective-C) est Apple Threading Programming Guide.

Questions connexes