La dernière API dont nous allons parler est celle qui permet à un processus de détruire une file d'attente
de messages.
En d'autres termes, un processus peut demander au système d'exploitation de libérer la file d'attente des messages en tant que ressource du noyau.
L'API s'appelle maintenant message queue unlink et l'argument de cette API est en fait l'identifiant de la file d'attente de messages.
Ainsi, le message queue unlink détruit la file d'attente des messages.
Détruire la file d'attente des messages signifie libérer la ressource du noyau.
Lorsque le processus invoque cette API, il indique en fait au système d'exploitation que lorsque cette
file de messages n'est plus utilisée par aucun autre processus, il suffit de la détruire complètement.
Il doit donc être appelé lorsque le processus a été invoqué.
Fermeture de la file d'attente de messages sur la file d'attente de messages.
C'est vrai.
Ainsi, lorsque le processus a invoqué la fermeture de la file d'attente des messages, la file d'attente des messages est fermée.
La prochaine chose que le processus doit faire est d'invoquer l'API de déliaison de la file d'attente de messages.
En général, le créateur du processus doit détruire la file d'attente des messages.
En général, le processus qui crée la file d'attente des messages devrait également être celui
qui détruit la file d'attente.
Ainsi, le processus qui a créé la file d'attente de messages pour la première fois doit invoquer
l'API de déliaison de la file d'attente de messages pour la détruire.
Cette API renvoie moins un si elle échoue pour une raison quelconque et renvoie zéro en cas de succès.
Et bien sûr, l'effet de l'invocation de cette API sur une file d'attente de messages est reporté.
Si d'autres processus utilisent actuellement la file d'attente des messages.
Pour comprendre ce point, supposons qu'il existe un processus P 1 et que ce processus P 1 a créé une file
d'attente de messages pour la première fois, n'est-ce pas ?
C'est donc ce processus qui est à l'œuvre.
P one est en fait le propriétaire de la file d'attente des messages.
Et à un moment donné, supposons qu'il y ait un processus P 2 qui utilise également la file d'attente des messages et qu'il y ait un
processus P 3 qui utilise également la file d'attente des messages.
Supposons maintenant qu'à ce stade, le processus p one ait invoqué l'API "message queue unlinked" sur cette file de
messages.
C'est le processus.
P one demande en fait au système d'exploitation de détruire cette file d'attente de messages.
Mais le système d'exploitation ne détruira pas cette file de messages et reportera sa destruction jusqu'au moment où
tous les processus qui utilisent cette file de messages, c'est-à-dire le processus P-2 et le
processus P-3, invoqueront l'API de fermeture de la file de messages sur cette file de messages.
Dès que le système d'exploitation détecte que le nombre de références de ce message
est tombé à zéro, il est le seul à effectuer l'invocation d'annulation de lien sur cette file
d'attente de messages et à détruire complètement cette file d'attente.