80 votes

Les files de messages sont-elles obsolètes sous Linux?

J'ai joué avec des files d'attente de messages (Système V, mais POSIX devrait être ok aussi sous Linux), récemment et ils semblent parfait pour ma demande, mais après la lecture de L'Art de la Programmation Unix, je ne sais pas si ils sont vraiment un bon choix.

http://www.faqs.org/docs/artu/ch07s02.html#id2922148

La tige, de transmission de message de la couche de l'IPC System V a largement chuté hors d'usage. La couche inférieure, qui se compose de la mémoire partagée et les sémaphores, a encore beaucoup de demandes dans des circonstances où l'on doit faire mutual exclusion de verrouillage et de certaines mondial de partage des données entre les processus s'exécutant sur la même machine. De ces la mémoire partagée System V installations évolué dans la POSIX mémoire partagée API supporté sous Linux, les Bsd, MacOS X et Windows, mais pas classique de MacOS.

http://www.faqs.org/docs/artu/ch07s03.html#id2923376

Le System V IPC les installations sont présents dans Linux et les Unix modernes. Cependant, comme ils sont un héritage, ils ne sont pas exercés très souvent. La version Linux est encore connu pour avoir des bugs à compter de la mi-2003. Personne ne semble se soucier assez de les corriger.

Sont le Système V files d'attente de messages encore buggé dans les plus récentes versions de Linux? Je ne sais pas si l'auteur veut dire que les files de messages POSIX devrait être ok?

Il semble que les sockets sont les préférés de la CIB pour presque rien(?), mais je ne vois pas comment il serait très simple à mettre en œuvre des files d'attente de messages avec des sockets ou quelque chose d'autre. Ou suis-je en pensant trop complexe?

Je ne sais pas si c'est pertinent, je travaille avec Linux embarqué?

90voto

Duck Points 17054

Personnellement, je suis assez friand des files d'attente de messages et je pense qu'ils sont sans doute les plus sous-utilisées de la CIB dans le monde unix. Ils sont rapides et faciles à utiliser.

Un couple de pensées:

  • Certains de c'est juste de la mode. Vieux les choses deviennent de nouveau. Ajouter un brillant ne-père sur les files d'attente et ils peuvent être l'année prochaine récentes et les plus chaudes de la chose. Coup d'oeil sur Google Chrome à l'aide de processus distincts au lieu de threads pour ses onglets. Soudain, les gens sont heureux que lorsqu'un onglet est verrouillé, il n'est pas de faire baisser le navigateur entier.

  • De mémoire partagée a quelque chose d'un homme, halo ce sujet. Vous n'êtes pas un "vrai" programmeur si vous n'êtes pas presser le dernier cycle de la machine et MQs sont légèrement moins efficace. Pour beaucoup, sinon la plupart des applications, c'est une absurdité totale, mais parfois, il est difficile de briser un état d'esprit une fois qu'elle est installée.

  • MQs ne sont pas vraiment approprié pour les applications avec des données illimité. Flux orienté mécanismes comme des tuyaux ou des sockets sont tout simplement plus facile à utiliser.

  • Le Système V variantes ont vraiment tombé hors de la faveur. En règle générale aller avec POSIX versions de la CIB quand vous le pouvez.

19voto

MarkR Points 37178

Oui, je pense que les files de messages sont appropriées pour certaines applications. Les files d'attente de messages POSIX fournissent une interface plus agréable, en particulier, vous devez donner à vos files d'attente des noms plutôt que des ID, ce qui est très utile pour le diagnostic des pannes (il est plus facile de voir laquelle est laquelle).

Linux vous permet de monter les files de messages posix en tant que système de fichiers et de les voir avec "ls", de les supprimer avec "rm", ce qui est très pratique aussi (System V dépend des commandes "ipcs" et "ipcrm")

14voto

bmdhacks Points 9074

Je n'ai pas réellement utilisé POSIX files d'attente de messages, car j'ai toujours envie de laisser ouverte la possibilité de distribuer mes messages à travers un réseau. Avec cela à l'esprit, vous pourriez regarder plus robuste message-passing interface comme zeromq ou quelque chose qui implémente AMQP

Une des belles choses au sujet de 0mq est que lorsqu'il est utilisé de la même procédure de l'espace dans une application multithread, il utilise un lockless zéro-copie mécanisme qui est assez rapide. Encore, vous pouvez utiliser la même interface pour passer des messages sur un réseau, ainsi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X