15 votes

Classe de vecteur threadsafe pour C++

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.

2voto

Naveen Points 37095

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.

0voto

Yohannes Points 562

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X