each thread has it's own callback count and lock