Информация об изменениях

Сообщение Re[3]: Выбор Concurrent коллекции от 13.09.2016 16:16

Изменено 13.09.2016 16:17 VladCore

Здравствуйте, RQ, Вы писали:

RQ>Здравствуйте, VladCore, Вы писали:


VC>>Вы описали алгоритм, а спрашиваете про структуру данных.


RQ>Я описал сценарий работы множества потоков с данными и да, спрашиваю какая из стандартных структур данных лучше всего подойдет для описанного сценария.


Заведи BlockingCollection<Action> для обработчиков и IList<T> для самих элементов. В начале в the BlockingCollection<Action> добавь все нужные экшны. Работа будет завершена когда в the BlockingCollection<Action> не останется ни одного экшна. Это если в лоб делать. Но обычно одну и туже коллекцию на input и output не используют для "a workflow/a processing". Нет таких задач в которых и на входе workflow и на выходе структуры данных одинаковые.

Ты же в курсе в an Action из the BlockingCollection<Action> можно добавлять новые экшны?

Что не получается?
Re[3]: Выбор Concurrent коллекции
Здравствуйте, RQ, Вы писали:

RQ>Здравствуйте, VladCore, Вы писали:


VC>>Вы описали алгоритм, а спрашиваете про структуру данных.


RQ>Я описал сценарий работы множества потоков с данными и да, спрашиваю какая из стандартных структур данных лучше всего подойдет для описанного сценария.


Заведи BlockingCollection<Action> для обработчиков и IList<T> для самих элементов. В начале в the BlockingCollection<Action> добавь все нужные экшны. Работа будет завершена когда в the BlockingCollection<Action> не останется ни одного экшна. Это если в лоб делать. Но обычно одну и туже коллекцию на input и output не используют для "a workflow/a processing". Нет таких задач в которых и на входе workflow и на выходе структуры данных одинаковые. Ну кроме сортировки.

Ты же в курсе в an Action из the BlockingCollection<Action> можно добавлять новые экшны?

Что не получается?