Блокинг-образец для объектов с высокой памятью, на основе веса.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Блокинг-образец для объектов с высокой памятью, на основе веса.

Сообщение Anonymous »

Я использую блокирующую коллекцию в сценарии производителя/потребителя, где t s являются большими объектами с размером переменной памяти. Некоторые t s могут быть до 700 МБ, а другие могут быть до 10 МБ. Я хочу установить ограничение на общую память всех объектов, которые хранятся в любое время в коллекции. Я не хочу, чтобы это превышало 1 ГБ памяти, потому что тогда я получаю OutOfMemoryException s. BlockingCollection не предоставляет эту функциональность из коробки. Я могу ограничить емкость коллекции на определенное количество предметов, но не на определенном максимальном общем весе. Поэтому мне, возможно, придется реализовать что -то подобное вручную.

Код: Выделить всё

class WeighedBlockingCollection
{
public WeighedBlockingCollection(long maximumTotalWeight);
public void Add(long itemWeight, Func itemFactory);
public void CompleteAdding();
public IEnumerable GetConsumingEnumerable();
}
Метод добавить имеет параметр func itemfactory , потому что я хочу отложить создание объекта, пока в коллекции не будет достаточно пустого места, чтобы принять его. Кроме этого, эта коллекция должна вести себя точно так же, как встроенная блокировка . Он должен быть безопасным для потока и поддерживать нескольких производителей и потребителей. Он должен не приоритет меньшим объектам по сравнению с большими объектами.
На случай, если Add вызывается с помощью веса больше, чем указанный максимальный вес , или отрицательно, исключение должно быть добавлено. Это было вдохновлено этим недавним вопросом.

Подробнее здесь: https://stackoverflow.com/questions/796 ... d-capacity
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Образец образец фиксированного параметра в зависимости от другого параметра
    Anonymous » » в форуме Python
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Как применить веса HCUP NIS (кластеры, слои и веса) в Python для национальных оценок и анализа PSM?
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Образец вики с вики -памятью GCC Barred
    Anonymous » » в форуме C++
    0 Ответы
    40 Просмотры
    Последнее сообщение Anonymous
  • Образец вики с вики -памятью GCC Barred
    Anonymous » » в форуме C++
    0 Ответы
    30 Просмотры
    Последнее сообщение Anonymous
  • Задержка перезапуска процесса с высокой памятью после сбоя
    Anonymous » » в форуме Linux
    0 Ответы
    287 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»