Alors les gars, discutons maintenant de certains aspects de l'utilisation d'une file d'attente de messages dans l'application.
Voilà comment vous devez utiliser une file d'attente de messages dans votre application et comment vous ne devez pas utiliser une file d'attente de messages
dans votre application.
Dans cette diapositive, nous allons donc discuter de la manière dont la file d'attente de messages doit être utilisée.
Un mécanisme IPC de file d'attente de messages prend généralement en charge et complète un paradigme de communication, ce qui signifie qu'il peut y avoir plusieurs
expéditeurs mais un seul récepteur par file d'attente de messages.
Plusieurs expéditeurs peuvent ouvrir la même file d'attente de messages en utilisant message, queue, nom et mettre en file d'attente leurs messages respectifs
dans la même file d'attente de messages.
Le processus récepteur peut prendre un message dans la file d'attente des messages qui a été placé par différents processus expéditeurs dans la même
file d'attente des messages.
Toutefois, un processus de réception peut prendre des messages provenant de différentes files d'attente en même temps.
C'est ce qu'on appelle le multiplexage à l'aide de l'appel système select.
Dans ce cas, le processus de réception peut utiliser un appel système de sélection afin d'effectuer un multiplexage sur différentes files
d'attente de messages en même temps.
Nous en discuterons lorsque nous aborderons le code d'implémentation d'une file d'attente de messages.
En résumé, il y a donc trois points importants à retenir.
Une file d'attente de messages ne peut prendre en charge qu'un seul processus client à la fois.
Le client peut retirer les messages de plusieurs files d'attente à l'aide de l'appel système select.
Il n'y a pas non plus de limite aux processus du serveur.
Essayons donc de comprendre ces points à l'aide de l'animation de la diapositive suivante.
Supposons donc que nous ayons un processus A1 et un processus B qui s'exécutent sur la même machine.
Supposons que le processus A1 ait créé une file d'attente de messages à l'intérieur d'un système d'exploitation.
Le processus a un a mis des messages en file d'attente.
Message un message aux masses trois et message pour.
Dans la file d'attente des messages.
Et le processus est du côté de la réception, décodant simplement ces messages à partir de la file d'attente.
Il s'agit donc d'un exemple assez simple d'utilisation d'une file d'attente de messages.
Supposons maintenant qu'il y ait deux autres processus dans le système, à savoir le processus A2 et le processus A3.
Ces deux processus sont donc également les processus émetteurs et ils utilisent la même file d'attente de messages afin d'assurer
la transmission de leurs messages respectifs à la file d'attente de messages.
C'est vrai.
Ainsi, à ce stade, les trois processus, à savoir le processus un, le processus deux et le processus
trois, encodent respectivement leurs messages dans la même file d'attente de messages.
Le processus B du côté de la réception, quant à lui, se contente de retirer les messages de la file d'attente
au fur et à mesure qu'ils arrivent.
Mais supposons qu'un autre processus C s'exécute sur la même machine et qu'il souhaite également retirer le message
de la file d'attente des messages, en plus du processus B.
Cette fonctionnalité n'est donc pas prise en charge par le système d'exploitation Linux.
C'est celui qui se trouve du côté de la réception.
Un seul processus peut prendre un message dans la file d'attente.
Deux processus ou plus ne peuvent pas prendre un message de la file d'attente en même temps.
Ainsi, en utilisant la file d'attente de messages comme IPC, le même message ne peut pas être délivré à plusieurs destinataires
en même temps.
C'est donc la limite de la file d'attente de messages en tant qu'IPC.
Toutefois, il est possible qu'un même processus de réception reçoive un message de différentes files d'attente
en même temps.
Par exemple, le processus B est déjà en train de retirer un message de cette file d'attente et il est également
possible que le processus B prenne un message d'une autre file d'attente.
Même file d'attente de messages pour.
Cette fonctionnalité est donc prise en charge.
Mais ce qui n'est pas pris en charge, c'est que deux processus de réception ou plus ne peuvent pas retirer le message de la
même file d'attente en même temps.
Nous allons maintenant aborder le travail de codage de la mise en œuvre de la file d'attente de messages, et nous verrons
comment les différentes API que nous avons abordées jusqu'à présent peuvent être utilisées.