Как обрабатывать n элементов в коллекции одновременно - PullRequest
1 голос
/ 13 августа 2010

Я строю класс, который наследуется от List. Элементы будут добавлены в эту коллекцию во время выполнения, и я хочу, чтобы этот класс автоматически что-то делал с каждым блоком из n элементов после их добавления.

Итак, вот сценарий.

1] Создать новый класс, который наследуется от List - CollectionX

2] Во время выполнения мы будем много раз вызывать ColX.Add (T)

3] Когда ColX имеет 500 или более элементов, он должен переместить их во временную область и поработать с ними, а затем удалить их. Помните, что все элементы будут добавляться в ColX.

Так что я думаю, мой вопрос в том, как мне это реализовать и обеспечить, чтобы он был безопасным для потоков.

Работу, которую необходимо выполнить, нужно выполнять блоками, поэтому я не думаю, что очередь будет работать, поскольку вы можете снять только 1 элемент за раз.

Я думаю, что я ищу больше шаблонов, чем реальных типов или библиотек.

Может кто-нибудь помочь?

1 Ответ

0 голосов
/ 13 августа 2010

Не позволяйте CollectionX наследоваться от List.

Вместо этого используйте 2 Списка внутри, Добавьте () к 1 и обработайте другой.

Таким образом, вам нужно только lock обмен списками. Если есть проблемы со временем, вы можете использовать третий список для предотвращения блокировки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...