Avoid signalAll if possible