Il VTune Profiler di Intel può fare un po 'di quello che si chiede. Dal sito VTune:
Serrature e Waits: utilizzare le prestazioni Intel® strumenti di profilazione per trovare rapidamente una comune causa di un rallentamento delle prestazioni in programmi paralleli: in attesa troppo a lungo su un blocco, mentre i nuclei sono sottoutilizzate durante l'attesa.
Timeline visualizza Comportamento Discussione: Vedere quando i thread sono in esecuzione e in attesa, e quando si verificano le transizioni.
Se stavi cercando qualcosa che sia open source/gratuito, allora Valgrind ha uno strumento sperimentale chiamato Helgrind che presumibilmente trova razze nei programmi multi-thread. Non posso commentare, non l'ho usato.
Devo notare che non sono riuscito a utilizzare questi o altri profiler per il debugging e le ottimizzazioni multi-thread e invece ho sviluppato le mie tecniche.
Per identificare la contesa del blocco, la mia tecnica preferita è l'utilizzo di una classe Mutex estesa che registra tutte le operazioni eseguite su ciascuna istanza. Lo faccio in un modo molto leggero, in modo che le prestazioni dell'applicazione non cambino in modo significativo.
Per identificare le condizioni di gara, trovo l'approccio della forza bruta il migliore. Ho appena progettato un test che può essere eseguito per un lungo periodo di tempo, a volte questo è ore o giorni, a seconda dei casi. E faccio sempre il mio test su almeno due piattaforme diverse (più se posso), dal momento che diversi sistemi operativi utilizzano diversi scheduler e questo offre una copertura migliore.
Buona fortuna, starò a guardare per una risposta ragionevole. Penso che tu abbia bisogno di avere una comprensione completa del thread di esecuzione che stai dividendo in multi. Ci sono molti strumenti per profilare e produrre grafici di esecuzione (fav è il profiler delle prestazioni di Redgate, costoso ma fantastico) ma senza le specifiche che stai girando al buio. – Justin
@Justin Ah Ho dimenticato di dire che l'applicazione su cui sto lavorando è in C++. – fantasticsid
@fantasticid: ho modificato il tuo titolo per riflettere il tuo interesse. –