This part is hard to understand, It would be nice if you can put this in a well named Function like 
if ( !DAO::pauseSemaphore().tryAcquire() ) { -> if(DAO::pauseRequested()) { 
 DAO::pauseSemaphore().acquire("TrackCollection"); -> DAO::makePause();