Est-ce que quelqu'un connaît une classe vectorielle threadsafe pour C++ ? Je suis en train de faire du multithreading avec du code, et je pense que le problème que j'ai est lié à la façon dont les vecteurs sont utilisés. J'ai l'intention de réécrire le code, mais avant de le faire, j'aimerais le tester avec un vecteur threadsafe pour être sûr. Je me dis aussi que si une telle chose existe, ce serait beaucoup plus facile que d'écrire ma propre version.
Réponses
Trop de publicités?Comme l'explique Scott Meyers dans le livre STL efficace, un conteneur thread safe permet de s'attendre à cela :
- Les lectures multiples sont sûres
- Les écritures multiples dans différents conteneurs sont sûres.
C'est tout. Vous ne pouvez pas vous attendre à ce que d'autres choses telles que des écritures multiples dans le même conteneur soient sûres pour les threads. Si c'est tout ce que vous voulez, vous pouvez jeter un coup d'oeil à STLPort . Si ce n'est pas le cas, la seule option que je vois est de contenir le vecteur dans une classe qui synchronise l'accès au vecteur.
Si vous ne l'avez pas encore fait, envisagez d'utiliser concurrent_vector de la bibliothèque tbb bibliothèque. Les vecteurs STL C++ ne sont pas sûrs pour les threads, donc si vous prévoyez de modifier les ressources vectorielles à partir de plusieurs threads, la solution la plus simple que j'ai trouvée est d'utiliser concurrent_vector.