Silly bug, oversight on my part, fix kindly provided by Dragi a Duri . Thanks! Problem was that inCritical threads refuse the signal and reset their state to Started. So when the collector thread resends the signal the mutators will not see that they are supposed to stopping. (detail)