Я только что просматривал документацию MSDN для ConcurrentDictionary , и я видел это в "примере" кода:
// We know how many items we want to insert into the ConcurrentDictionary.
// So set the initial capacity to some prime number above that, to ensure that
// the ConcurrentDictionary does not need to be resized while initializing it.
int NUMITEMS = 64;
int initialCapacity = 101;
Для справки, словарь в MSDN Пример инициализируется следующим образом:
ConcurrentDictionary cd = new ConcurrentDictionary(Environment.ProcessorCount * 2, initialCapacity);
for (int i = 0; i < NUMITEMS; i++) cd[i] = i * i;
В этом примере словарь никогда не будет содержать более 64 элементов. Почему бы не установить начальную емкость 64, а не кажущееся произвольным простое число больше 64? В комментарии говорится, что это сделано для того, чтобы не изменять размер словаря при его инициализации, но зачем изменять размер аналогичного словаря с initialCapacity = 64? Почему было выбрано это простое число?