Bonjour à tous.

J'ai dernièrement voulu multithreader une application faisant un usage intensif de conteneurs de la STL.

Malheureusement, la version multithreadée est plus lente que l'originale, la faute fort vraisemblablement au fait que deux threads se gênent mutuellement lorsqu'ils allouent de la mémoire pour créer un nouvel élément d'un conteneur.
(si je ne fais que des accès en lecture à mes conteneurs l'application est bien accélérée par le multithreading).

(ce problème s'est posé aussi bien sous Windows avec VisualC que sous Linux avec GCC et Stdlibc++)

Ce problème est censé être résolu :
  • soit par l'utilisation de l'allocator nommé mt_allocator dans la Stdlib de GNU (1) mais ce truc n'est pas portable (et peut être même abandonné)
  • soit par l'utilisation d'une lib telle que Hoard (2), mais que je n'ai pas réussi à faire fonctionner
  • soit peut être (j'ai pas essayé) en créant plusieurs processus plutôt que plusieurs threads, mais ce n'est pas pratique pour leur faire partager des données


Aussi je viens demander si quelqu'un a déjà eu le même soucis et trouvé une solution, ou s'il faut songer à utiliser autrechose que STL.


Merci

(1)http://www-eleves-isia.cma.fr/Doc/li...allocator.html
(2)http://www.hoard.org/