Задать вопрос
@daniil14056

Как работает ArrayPool c#, Что означают параметры?

Что означают параметры этого метода.
Какими они должны быть? И на что влияют, а то они явно не работают?
ArrayPool Create (int maxArrayLength, int maxArraysPerBucket);
Это невозможно расшифровать.

maxArrayLength nt32 Максимальная длина экземпляра массива, который может храниться в пуле.

maxArraysPerBucket Int32 Максимальное число экземпляров массива, которое может храниться в каждом контейнере в пуле. Для более быстрого доступа пул группирует массивы схожей длины в контейнеры.

Почему тогда
// создаю пул с макс длинной 1, и что-то там еще 1
    ArrayPool<int> pool = ArrayPool<int>.Create(1,1); 
// а почему  он создает, а не кидает там исключение, если макс размер 1? 
    var a1=pool.Rent(5000000);
    pool.Rent(5000000); // а макс число экз-ов почему так же не работает
     pool.Rent(5000000);
     pool.Rent(5000000);
     pool.Rent(5000000);  
     а pool.Return() что делает, точнее надо ли перед pool.Return() очищать массив, или обнулять.
  • Вопрос задан
  • 282 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
GavriKos
@GavriKos
https://stackoverflow.com/questions/62584548/array...

Судя по вот этому объяснению - Create резервирует, но не ограничивает длину массива. Т.е. у вас будет аллокация на Create, а потом на Rent при превышении размера. Если Rent запросит меньше чем было на Create - аллокации не будет. По похожему принципу List capasity работает
Ответ написан
Комментировать
yarosroman
@yarosroman Куратор тега C#
C# the best
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы