Faire une classe C++ un Moniteur (dans la concurrente de sens)

Je veux m'assurer qu'un seul thread à la fois peut exécuter une méthode de ma classe C++. En d'autres termes, la classe se comporter comme un Moniteur.

Est-il un motif, templatized façon de le faire, ou une augmentation de la classe que je peux utiliser? Parce que ma seule idée à ce jour est l'ajout d'une Section Critique de membre, et l'acquérir au début de chaque méthode et de le libérer à la fin (à l'aide de RAII, bien sûr). Mais cela semble très redondant, et je ne peux pas le réutiliser pour une autre classe.

Il est difficile pour moi d'imaginer le faire avec moins de code. Le code nécessaire pour votre solution proposée est d'une ligne pour la classe (le mutex membre), plus une ligne pour chaque fonction. Je ne pense pas que ça va arriver plus petits sans le support de la langue. Est-ce la question? Si oui, la réponse est "C++ n'a pas de support de langue pour la fabrication de moniteurs". 🙂
Pourquoi ne pas simplement utiliser un mutex, il est largement disponible. Inventer votre propre primitives de synchronisation a un talent pour byting mal.
Voir Boost.Thread dans le cas où ce n'était pas assez évident. :-]

OriginalL'auteur dario_ramos | 2012-09-28