Bonjour,
je travaille actuellement avec les sf::Thread sur un système de réseau.
Mais les mutexes ne font que ralentir la procédure de traitement, de réception et d'envoi. En fouillant un peu dans la STL comme à mon habitude, les spécifications de std::list m'ont apparues comme extrêmement favorable au thread-safe lorsqu'on les utilise comme des FIFO. Je m'explique :
push_back n'invalide aucune référence ni aucun itérateur.
pop_front n'invalide que les références et les itérateurs sur l'objet supprimé (autrement dit il invalide begin()).
Or push_back n'utilise que end() ?
Et pop_front seulement begin() ?
la fonction de liaison qui permet de savoir si la file contient un élément est empty() qui se contente de retourner begin() == end().

A votre avis est-ce suffisant pour ne pas avoir de collision entre les threads ? ou bien pop et push invalident temporairement les itérateurs avant de les rendre valides ?