2010-01-13 5 views
7

Je crée des compteurs de performance personnalisés. Je vais créer des tâches sur un pool de threads et incrémenter/décrémenter les compteurs à partir de plusieurs threads de travail. Dois-je donner à chaque fil un nouvel objet compteur? Est-il sûr de partager un thread d'exécution de compteur de performance (pour l'incrémentation/décrémentation)Compteurs de performance et filetage

Répondre

6

La classe PerformanceCounter utilise déjà un wrapper threadsafe, une classe interne nommée SharedPerformanceCounter. Il utilise Interlocked.Increment() pour incrémenter une valeur de compteur par exemple.

Vous n'avez pas besoin de vous enfermer.

+1

Yah, j'ai fini par réfléchir là-dedans et j'ai vu ça. Ensuite, j'ai lu l'aide, et il lit que seules les méthodes statiques sont thread safe. Donc, je suppose que je suis coincé avec un dilemme philosophique: Puisque la documentation ne garantit pas la sécurité, devrais-je traiter l'encapsuleur actuel comme un détail d'implémentation, l'ignorer et créer des instances spécifiques aux threads? une erreur de documentation et continuer avec les compteurs partagés? compte tenu de ce que je vois dans le code, je pense que je suis en sécurité, mais 15 ans d'ingénierie logicielle m'ont blasé, alors je pourrais aller conservateur. – JMarsch

+0

Si vous voulez une garantie avec garantie, vous devez appeler Microsoft. –

+0

Yah, je sais, je ne m'attends pas à ça ici. Je sonne juste ce que je pense. – JMarsch

Questions connexes