public void countDown()
{
lock(mutex)
{
if( remaining > 0 )
{
remaining--;
if( remaining <= 0 )
{
mutex.PulseAll();
}
}
}
}