C++ Accès à vecteur à partir de plusieurs threads

Dans mon programme, j'ai quelques threads en cours d'exécution. Chaque fil est un pointeur vers un objet (dans mon programme - vecteur). Et chaque thread modifie le vecteur.

Et parfois mon programme ne fonctionne pas avec une segm-faute. J'ai pensé qu'elle s'est produite parce que le thread A commence à faire quelque chose avec le vecteur tandis que le thread B n'a pas fini d'exploitation avec elle? Peut-il de l'abeille vrai?

Comment suis-je censé faire? La synchronisation des threads? Ou peut-être faire un drapeau VectorIsInUse et de définir cet indicateur à true lors de l'exploitation avec elle?

Vous avez probablement besoin d'éviter les opérations d'écriture avec les mutex. Notez que même si vous verrouillez les opérations d'écriture, les itérateurs et les références peuvent invalidé, donc il n'est pas totalement sûr de la solution. Vous êtes mieux de ne pas effectuer la modification des opérations de plus d'un thread.
Salut, une erreur de segmentation est généralement causée par l'accès à de la mémoire qui n'est pas réservé par votre processus. Se pourrait-il que vous utilisez quelque chose comme un pointeur qui n'est pas réellement un pointeur? Sinon, vérifiez ceci: stackoverflow.com/questions/1099513/...
Downvote? Commentaire il vous plaît.
non seulement les opérations d'écriture, tous les opérations. Tous les accès partage de données doit être protégé.
d'accord, et certains accès (par exemple, des références à des éléments du conteneur ou des itérateurs) vous ne pouvez pas vraiment le protéger de toute façon...

OriginalL'auteur Kolyunya | 2012-09-04