2011-05-31 7 views
1

J'ai le problème suivant. Dans l'une des bibliothèques, j'ai remarqué un nombre croissant d'événements et de manipulations de sémaphores. La seule primitive de synchronisation que j'utilise est CriticalSection. Quelle peut être la cause de l'augmentation des poignées qui ne sont pas fermées?Augmentation du nombre de handles de sémaphore

OS: Windows Server 2003 R2 compilateur: Microsoft C++ 2003

+0

Utilisez Processexplorer ou handles.exe (anciennement sysinternals.com, actuellement technet) pour diagnostiquer l'utilisation des handles. Perfmon peut aider à visualiser les comptes, WinDbg pour les cas compliqués – sehe

+0

peut-être ne supprimez-vous pas les objets de section critiques? Pouvez-vous poster du code? – Naveen

+0

Cela dépend entièrement de la définition et de l'utilisation de 'CriticalSection' si vous parlez de l'API windows ici, alors assurez-vous que vous appelez' DeleteCriticalSection' quand les handles ne sont plus nécessaires. – AJG85

Répondre

1

Bien que pas un kernel object, une section critique utilise en interne les autres objets du noyau, comme événement et/ou sémaphores (voir par exemple an article in MSDN Magazine, mais il est assez vieux et les structures discutées ici peuvent être quelque peu différentes dans les versions modernes de Windows). Comme d'autres l'ont noté dans les commentaires, si vous ne publiez pas correctement les sections critiques en appelant DeleteCriticalSection, le nombre de handles utilisés augmentera.

Questions connexes