HPCToolkit and TAU are good options for profiling C++ applications. They come from HPC so they are intended for use with parallel and highly concurrent applications. http://hpctoolkit.org/ https://www.cs.uoregon.edu/research/tau/home.php
[TAU is doubtless a good bet, but for what it's worth for general interest, the other common systems for HPC are openspeedshop.org, cube/scalasca (scalasca.org), and extrae/paraver (bsc.es). A good comparison of them all would be useful, but I've not found one.]