public GroupPreprocessor( MainContext mainContext, MainStorage mainStorage, MainPool mainPool) { _context = mainContext; _storage = mainStorage; _pool = mainPool; _worker = new SingleThreadWorker <Request>(r => { if (r.PostEnded) { CompressImpl(); DataConfig.GroupUpdates = false; return; } if (r.ImportEnded) { LoadEndedImpl(); return; } if (r.IsLoad) { AddImpl(r.Dto, true); return; } DataConfig.GroupUpdates = true; if (r.IsAdd) { AddImpl(r.Dto, false); } else { UpdateImpl(r.Dto); } }, "Group thread started"); for (int i = 1; i < 32; i++) { GroupKey keys = (GroupKey)i; int initialCapacity = 1; if (keys.HasFlag(GroupKey.Sex)) { initialCapacity *= 2; } if (keys.HasFlag(GroupKey.Status)) { initialCapacity *= 3; } if (keys.HasFlag(GroupKey.City)) { initialCapacity *= 700; } if (keys.HasFlag(GroupKey.Country)) { initialCapacity *= 100; } if (keys.HasFlag(GroupKey.Interest)) { initialCapacity *= 160; } initialCapacity = Math.Min(initialCapacity, DataConfig.MaxId); _data[keys] = new SortedSet <GroupBucket>(GroupBucketComparer.Default); } }