Bonjour,

J'ai une classe de type gestionnaire de sons qui contient des pointeurs sur des instances d'objets "son". Quand un son se termine, il prévient le gestionnaire qui le supprime alors de sa liste.

Il se peut qu'un son se termine pendant que la liste des sons est parcourue. Dans ce cas, j'ai une suppression qui se fait durant le parcours de la liste, ce qui peut entraîner des catastrophes telles qu'une erreur de segmentation.

Je cherche donc un moyen d'autoriser plusieurs parcours simultanés de la liste en lecture tant qu'aucune modification n'est à faire. En gros, je veux que la suppression dans la liste soit exclusive de tout autre traitement.

Je pensais mettre un mutex sur les lectures et sur la suppression. Cependant, avec une telle solution, je ne peux plus avoir plusieurs lectures simultanées de la liste. J'ai vu sur developpez.com une solution à base de sémaphores et de mutex utilisant Qt. Connaissez-vous une solution qui se passe de Qt ? J'ai bien le mutex de Boost.Thread, mais il ne me semble pas avoir vu de sémaphore.