le probleme c'est que le process doit faire du resource tracking pour savoir quand il peut detacher le segment.
Ce n'est vraiment pas un problème spécifique à shm, au contraire !
Car cette obligation s'applique à toutes les zonnes mémoires allouées dynamiquement par tout process et tout thread. Et même dans le cas d'un processus monothread isolé. Il faut toujours s'assurer qu'aucun objet que l'on utilise ne se trouve dans une zone avant de la libérer par free !
Et si on ne veut pas se faire chier, il n'y a que la solution de la libération automatique à la mort du process (ou des process dans le cas de shm).
Avec les threads tu dois faire ce travail aussi. Et même encore + !
L'avantage de shm, c'est que un process n'a à se préoccuper que des objets qu'il compte utiliser par la suite. Pas des objets qui seront utilisés uniquement par les autres process pour des communications qui ne le concerneront pas.
Car en détachant un shm, un process ne supprime pas les objets alloués par les autres process pour leur propres communications.
Avec les threads tu dois aussi te préoccuper de tous les objets des autres threads, même si le thread actuel ne s'en servira jamais. C'est donc pire que avec shm !
[^] # Re: malloc bugs pour threads
Posté par free2.org . En réponse à la dépêche PTT : un outil de trace pour la NPTL. Évalué à 2.
Ce n'est vraiment pas un problème spécifique à shm, au contraire !
Car cette obligation s'applique à toutes les zonnes mémoires allouées dynamiquement par tout process et tout thread. Et même dans le cas d'un processus monothread isolé. Il faut toujours s'assurer qu'aucun objet que l'on utilise ne se trouve dans une zone avant de la libérer par free !
Et si on ne veut pas se faire chier, il n'y a que la solution de la libération automatique à la mort du process (ou des process dans le cas de shm).
Avec les threads tu dois faire ce travail aussi. Et même encore + !
L'avantage de shm, c'est que un process n'a à se préoccuper que des objets qu'il compte utiliser par la suite. Pas des objets qui seront utilisés uniquement par les autres process pour des communications qui ne le concerneront pas.
Car en détachant un shm, un process ne supprime pas les objets alloués par les autres process pour leur propres communications.
Avec les threads tu dois aussi te préoccuper de tous les objets des autres threads, même si le thread actuel ne s'en servira jamais. C'est donc pire que avec shm !