2010-10-13 11 views
3

J'ai cherché une telle question dans google et obtenu des réponses différentes.Je ne peux pas déterminer si posix aio dans linux 2.6 soutenir le descripteur de fichier socket ou non.Est-ce que posix aio dans linux 2.6 support descripteur de fichier socket?

si elle supporte socket TCP, le fait aiocb.aio_offset = 0 par rapport à le premier octet de la prise readed tcp fd?

si ce n'est pas le cas, est-ce que n'importe quelle bibliothèque io asynchrone dans le support linux fd?

+1

Citant un commentaire de @ [skyde] (http://stackoverflow.com/users/185646/skyde): Ce n'est pas le cas. "AIO lire et écrire sur les sockets (ne renvoie pas une erreur explicite, mais par défaut discrètement à un comportement synchrone ou plutôt non-AIO)" - http://lse.sourceforge.net/io/aio.html – jweyrich

Répondre

0

Un commentaire ci-dessus indique que aio ne prend pas en charge les sockets. Vous demandez des alternatives possibles.

Les plus évidents sont:

  • utiliser un événement modèle de programmation axée, soit produit à la main en utilisant poll (2) ou quoi avez-vous ou via une bibliothèque comme la « libevent » de Niels Provos
  • utilisation fils

Je préfère généralement l'événement façon conduit de faire les choses, et utilise généralement libevent, qui est documenté ici: http://libevent.org/

Gardez à l'esprit, cependant, que la programmation orientée événement est assez différente de ce à quoi vous pouvez être habitué dans l'organisation du programme. Les threads sont conceptuellement similaires, bien que souvent moins efficaces lors de la manipulation d'un grand nombre de sockets.