Согласно известному графику, мне нужно вызвать метод Run
для заданного списка задач.Каковы исключительные случаи использования пула потоков
В настоящее время я использую синхронный вызов только из основного потока.
foreach (var task in tasksToRunInCurrentBatch)
{
Run(task.Key, task.Value);
}
Этот код будет, вероятно, должны быть улучшены, так как tasksToRunInCurrentBatch
может иметь более 10k задач, и я хочу, чтобы минимизировать общее время, пока последняя задача не была выполнена.
Run
только выполняет Action
задачи, который должен быть простым, но написано во внешнем коде, я не имею никакого влияния об этом, и это зависит от поставленной задачи.
Я рассматриваю возможность использования пула потоков в качестве решения.
так я начал, читая несколько статей - How to: Use a Thread Pool, Using Threading
Эти статьи объясняют основы, где все выглядит слишком хорошо. Каковы исключительные случаи использования пула потоков в текущем контексте?
Бросив десять тысяч шаров в воздухе и не имея ни один из них сталкиваются на пути вниз будет действительно исключительным. Вы не можете сделать эту работу надежно. –
@ HansPassant - Почему они «сталкиваются»? –
Написание потокобезопасного кода сложно. Поскольку реализация кода полностью вне пределов вашей досягаемости, нет ничего, что вы могли бы сделать, чтобы обеспечить его безопасность. –