2010-01-13 18 views
7

Sto creando dei contatori delle prestazioni personalizzati. Creerò le attività su un pool di thread e incrementando/decrementando i contatori da più thread di lavoro.Contatori delle prestazioni e threading

Devo assegnare a ciascun thread un nuovo oggetto contatore? È sicuro condividere un cross-thread oggetto contatore prestazioni (per incremento/decremento)

risposta

6

La classe PerformanceCounter utilizza già un wrapper threadsafe, una classe interna denominata SharedPerformanceCounter. Utilizza Interlocked.Increment() per incrementare un valore del contatore, ad esempio.

Non è necessario bloccarsi.

+1

Yah, ho finito col riflettore dentro e l'ho visto. Poi ho letto l'aiuto, e si legge che solo i metodi statici sono thread-safe. Quindi, suppongo di essere bloccato da un dilemma filosofico: poiché la documentazione non garantisce la sicurezza, dovrei considerare il wrapper corrente come un dettaglio di implementazione, ignorarlo e creare istanze specifiche del thread, o dovrei trattarlo come un errore di documentazione e procedere con i contatori condivisi? dato quello che vedo nel codice, penso di essere al sicuro, ma 15 anni di ingegneria del software mi hanno sfinito, quindi potrei diventare prudente. – JMarsch

+0

Se si desidera una garanzia con garanzia, è necessario chiamare Microsoft. –

+0

Yah, lo so, non me l'aspetto qui. Sto solo sondando quello che sto pensando. – JMarsch

Problemi correlati