Как реализовать явную, инспектируемую очередь задач? - PullRequest
0 голосов
/ 29 января 2020

Этот вопрос говорит о том, как традиционный шаблон очереди несколько устарел в современном C# из-за TPL: Лучший способ. NET для управления очередью задач в отдельном (одном) потоке

Принятый ответ предлагает то, что кажется решением без сохранения состояния. Это очень элегантно, но, возможно, я динозавр или неправильно понимаю ответ ... Что, если я хочу приостановить очередь или сохранить ее состояние? Что если при постановке в очередь задачи поведение должно зависеть от состояния очереди или если задачи в очереди могут иметь разные приоритеты?

Как можно эффективно реализовать упорядоченную очередь задач - которая на самом деле имеет явный объект Queue, который Вы можете проверять и даже взаимодействовать с парадигмой Task? Поддержка одиночной / параллельной обработки поставленных в очередь задач является преимуществом, но для моих целей единый параллелизм приемлем, если возникают проблемы. Я не имею дело с миллионами задач в секунду, на самом деле мои задачи, как правило, большие / медленные.

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

1 Ответ

0 голосов
/ 29 января 2020

То, что вы описываете звуки по существу как Channel<T> API. Это уже существует:

явно не является Queue<T>, но действует как очередь . Существует поддержка ограниченного и неограниченного, а также одного и нескольких читателей / писателей.

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