Est-il C++11 équivalent pour le coup de pouce shared_mutex. Ou une autre solution pour faire face à un multiple de lecteur / écrivain situation en C++11?
Réponses
Trop de publicités?J'ai essayé mais pas réussi à obtenir de l' shared_mutex
en C++11. Il a été proposé pour un futur standard. La proposition est ici.
Edit: Une version révisée (N3659) a été accepté pour le C++14.
Voici une mise en œuvre:
Simple... Il n'en est pas une. Il n'y a pas de standard C++ mise en œuvre de lecteurs-graveurs de verrouillage.
Mais, vous avez quelques options ici.
- On vous laisse à vos propres appareils pour faire vos propres lecteurs-verrou en écriture.
- L'utilisation de la plate-forme de mise en œuvre spécifiques tels que Win32 l', POSIX est, ou du coup de pouce que vous mentionnez.
- N'utilisez pas un du tout -- utiliser un mutex qui existe déjà en C++11.
Va avec #1 et la mise en œuvre de votre propre est un effrayant entreprise et qu'il est possible d'énigme votre code avec des conditions de course si vous n'avez pas l'obtenir. Il y a une référence de mise en oeuvre qui peut rendre la tâche un peu plus facile.
Si vous souhaitez plate-forme indépendante de code ou ne veulent pas comprendre tout de bibliothèques supplémentaires dans votre code pour quelque chose d'aussi simple que d'un lecteur-écrivain de verrouillage, vous pouvez jeter #2 par la fenêtre.
Et, #3 a un couple de mises en garde que la plupart des gens ne réalisent pas: à l'Aide d'un lecteur-écrivain serrure est souvent moins performant, et a de plus difficile à comprendre que le code d'un montant équivalent de la mise en œuvre à l'aide d'un simple mutex. C'est parce que de l'extra-comptable qui a pour aller sur les coulisses de l'un des lecteurs-graveurs de verrouillage de la mise en œuvre.
Je ne peux que vous présenter vos options, c'est vraiment à vous de peser les coûts et les avantages de chacun et de choisir ce qui fonctionne le mieux.
Je crois que vous êtes à la recherche pour les std::mutex ou std::lock_guard dans le fil de support de la bibliothèque. Toutefois, le soutien n'est pas répandue encore.