private void AddMyself()
{
lock (allInstances)
{
int size = allInstances.Count;
int upto = 0;
for (int i = 0; i < size; i++)
{
ConcurrentMergeScheduler other = allInstances[i];
if (!(other.closed && 0 == other.MergeThreadCount()))
// Keep this one for now: it still has threads or
// may spawn new threads
allInstances[upto++] = other;
}
allInstances.RemoveRange(upto, allInstances.Count - upto);
allInstances.Add(this);
}
}