2011-03-08 1 views
1

J'ai un programme avec 2 threads (A et B). Est-il possible de définir un bloc de code dans le thread B, qui une fois entré met en pause le thread A jusqu'à ce que le bloc ait fini de s'exécuter?Comment puis-je suspendre temporairement d'autres threads en utilisant boost :: thread?

J'utilise C++ et le coup de pouce de la bibliothèque :: fil 1,44

EDIT: Le problème que j'avais, ce qui m'a empêché de juste en utilisant un mutex était que je n'ai pas eu accès au code dans le thread A comme il est une bibliothèque non thread-safe, donc je ne pouvais pas contrôler quand il a accédé à ma ressource partagée. J'ai apporté quelques modifications architecturales à mon code et maintenant la ressource n'est plus partagée et le problème est résolu.

+4

Que se passe-t-il si le fil A contient un verrou requis par le fil B? –

+0

@Mike daniels, bon point! J'ai réarchitigé mon code afin que je puisse utiliser un mutex – lms

Répondre

2

autre que la solution scoped_lock/mutex de Grammin vous pouvez utiliser un condition variable (peut-être un idiome plus commun pour votre problème) ou même un barrier.

4

Ceci est appelé verrouillage et coup de pouce que vous voulez utiliser scoped_lock

Vérifiez cette page sur: scoped_lock

Questions connexes