WEBVTT

00:04.880 --> 00:11.310
Alors les gars, discutons maintenant de certains aspects de l'utilisation d'une file d'attente de messages dans l'application.

00:11.330 --> 00:17.690
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

00:17.690 --> 00:18.980
dans votre application.

00:20.120 --> 00:25.220
Dans cette diapositive, nous allons donc discuter de la manière dont la file d'attente de messages doit être utilisée.

00:26.600 --> 00:33.680
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

00:33.680 --> 00:37.190
expéditeurs mais un seul récepteur par file d'attente de messages.

00:37.610 --> 00:44.270
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

00:44.270 --> 00:46.310
dans la même file d'attente de messages.

00:46.790 --> 00:54.050
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

00:54.050 --> 00:55.520
file d'attente des messages.

00:57.720 --> 01:03.390
Toutefois, un processus de réception peut prendre des messages provenant de différentes files d'attente en même temps.

01:03.390 --> 01:06.390
C'est ce qu'on appelle le multiplexage à l'aide de l'appel système select.

01:06.660 --> 01:12.900
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

01:12.900 --> 01:14.820
d'attente de messages en même temps.

01:16.390 --> 01:22.270
Nous en discuterons lorsque nous aborderons le code d'implémentation d'une file d'attente de messages.

01:23.320 --> 01:26.890
En résumé, il y a donc trois points importants à retenir.

01:27.400 --> 01:31.060
Une file d'attente de messages ne peut prendre en charge qu'un seul processus client à la fois.

01:31.360 --> 01:36.670
Le client peut retirer les messages de plusieurs files d'attente à l'aide de l'appel système select.

01:37.270 --> 01:40.370
Il n'y a pas non plus de limite aux processus du serveur.

01:40.390 --> 01:45.370
Essayons donc de comprendre ces points à l'aide de l'animation de la diapositive suivante.

01:46.660 --> 01:53.100
Supposons donc que nous ayons un processus A1 et un processus B qui s'exécutent sur la même machine.

01:53.140 --> 01:58.690
Supposons que le processus A1 ait créé une file d'attente de messages à l'intérieur d'un système d'exploitation.

01:59.500 --> 02:02.780
Le processus a un a mis des messages en file d'attente.

02:02.800 --> 02:05.660
Message un message aux masses trois et message pour.

02:05.680 --> 02:06.820
Dans la file d'attente des messages.

02:07.860 --> 02:13.720
Et le processus est du côté de la réception, décodant simplement ces messages à partir de la file d'attente.

02:13.740 --> 02:17.880
Il s'agit donc d'un exemple assez simple d'utilisation d'une file d'attente de messages.

02:18.750 --> 02:25.510
Supposons maintenant qu'il y ait deux autres processus dans le système, à savoir le processus A2 et le processus A3.

02:25.530 --> 02:30.990
Ces deux processus sont donc également les processus émetteurs et ils utilisent la même file d'attente de messages afin d'assurer

02:30.990 --> 02:34.650
la transmission de leurs messages respectifs à la file d'attente de messages.

02:35.970 --> 02:36.540
C'est vrai.

02:36.540 --> 02:42.090
Ainsi, à ce stade, les trois processus, à savoir le processus un, le processus deux et le processus

02:42.090 --> 02:47.760
trois, encodent respectivement leurs messages dans la même file d'attente de messages.

02:48.030 --> 02:53.850
Le processus B du côté de la réception, quant à lui, se contente de retirer les messages de la file d'attente

02:53.850 --> 02:55.860
au fur et à mesure qu'ils arrivent.

02:56.580 --> 03:04.350
Mais supposons qu'un autre processus C s'exécute sur la même machine et qu'il souhaite également retirer le message

03:04.350 --> 03:08.310
de la file d'attente des messages, en plus du processus B.

03:08.340 --> 03:13.380
Cette fonctionnalité n'est donc pas prise en charge par le système d'exploitation Linux.

03:14.240 --> 03:17.500
C'est celui qui se trouve du côté de la réception.

03:17.510 --> 03:21.770
Un seul processus peut prendre un message dans la file d'attente.

03:22.400 --> 03:28.880
Deux processus ou plus ne peuvent pas prendre un message de la file d'attente en même temps.

03:29.510 --> 03:37.130
Ainsi, en utilisant la file d'attente de messages comme IPC, le même message ne peut pas être délivré à plusieurs destinataires

03:37.130 --> 03:37.990
en même temps.

03:38.000 --> 03:41.600
C'est donc la limite de la file d'attente de messages en tant qu'IPC.

03:41.810 --> 03:50.180
Toutefois, il est possible qu'un même processus de réception reçoive un message de différentes files d'attente

03:50.180 --> 03:51.770
en même temps.

03:51.770 --> 03:58.610
Par exemple, le processus B est déjà en train de retirer un message de cette file d'attente et il est également

03:58.610 --> 04:04.160
possible que le processus B prenne un message d'une autre file d'attente.

04:04.190 --> 04:05.510
Même file d'attente de messages pour.

04:06.250 --> 04:08.620
Cette fonctionnalité est donc prise en charge.

04:08.620 --> 04:15.460
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

04:15.460 --> 04:17.560
même file d'attente en même temps.

04:18.280 --> 04:23.170
Nous allons maintenant aborder le travail de codage de la mise en œuvre de la file d'attente de messages, et nous verrons

04:23.170 --> 04:27.610
comment les différentes API que nous avons abordées jusqu'à présent peuvent être utilisées.
