2012-01-04 4 views
3

Existe-t-il un cas d'utilisation pour les verrous récursifs? Y a-t-il un scénario qui nécessite absolument un verrouillage récursif?verrous récursifs

Semble être compliqué et dangereux à utiliser. Je peux voir que nous pouvons éviter les blocages (à condition que la pile de verrous ne déborde pas) mais nous ne voulons pas attraper de tels problèmes.

Peut-être qu'il me manque quelque chose ici. Tous les pointeurs sont appréciés.

Merci d'avance.

Répondre

1

J'aime le titre de cette entrée du blog:

Recursive locks will kill you

Je aime aussi cette citation:

http://www.thinkingparallel.com/2006/09/27/recursive-locks-a-blessing-or-a-curse/

Ne pas utiliser mutex récursifs. C'est comme le sexe avec des préservatifs usagés.

Enfin, voici un article très intéressant sur la façon dont les verrous récursives sont entrés dans pthreads Posix en premier lieu:

http://groups.google.com/group/comp.programming.threads/msg/d835f2f6ef8aed99?hl=en&pli=1

mutex récursifs sont un hack. Il n'y a rien de mal à les utiliser, mais ils sont une béquille. Vous avez une jambe cassée ou une bibliothèque? Bien, utilisez la béquille . Mais au moins, sachez que vous utilisez une béquille, et pourquoi; et de temps en temps, vérifiez la jambe (ou la bibliothèque) pour être sûr que vous avez toujours besoin de la béquille. Et si ça ne guérit pas, allez voir un médecin, parce que c'est tout simplement pas OK. Lorsque vous n'avez pas le choix, il n'y a pas de honte à utiliser une béquille ... mais vous ne pouvez pas très bien courir sur une béquille, et vous ralentirez aussi toute personne qui dépend de vous.

mutex récursifs peut être un excellent outil d'aide à fil de prototypage dans une bibliothèque existante, exactement parce qu'il vous permet de reporter le disque partie: le chemin d'appel et l'analyse dépendance des données de la bibliothèque. Mais pour la même raison, rappelez-vous toujours que vous n'êtes pas passé jusqu'à ce qu'ils soient tous partis, donc vous pouvez produire une bibliothèque dont vous êtes fier, cela ne contrindiquera pas inutilement la simultanéité de l'application entière .

+0

Merci. La chose de la béquille est logique, je suis tombé dans cette fixation de quelque héritage "hérité" du code. – kgunjikar