Есть ли.Net эквивалент java.util.concurrent.Executor?

Имейте долго выполняемый набор отдельных задач: анализ 10 тысяч строк из текстового файла, гидратирование в объекты, манипулирование и сохранение.

Если бы я реализовывал это в Java, я полагаю, что я мог бы добавить новую задачу в Executor для каждой строки в файле или задачи для X строк (то есть кусков).

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

Может ли CCR функционировать аналогично Java Executors или есть что-то еще доступное?

Спасибо

5 ответов

Решение

Вы можете посмотреть на параллельную библиотеку задач.

Начиная с C# 5 это встроено в язык с использованием async а также await ключевые слова.

Если вы собираетесь спросить кучу людей.NET о том, что ближе всего к эквиваленту Java Excecutors, вам не помешает описать отличительные особенности Java Executors. Человек, который знает ваш ответ, может быть не более знаком с Java, чем вы с.NET.

Тем не менее, если уже упоминавшаяся библиотека параллельных задач избыточна для ваших нужд, или вы не хотите ждать.NET 4.0, возможно, ThreadPool.QueueUserWorkItem() будет то, что вы ищете.

Может быть, это связано: Дизайн: Задача Parallel Library исследуется. См. 10-4 Эпизод 6: Параллельные расширения как краткое введение.

Для более старых потоковых подходов есть ThreadPool для пула.

Для тех, кто ищет более современное решение (как и я), проверьте класс EventLoopScheduler.

Вероятно, вам нужен класс BackgroundWorker. Как следует из названия, он позволяет запускать фоновые задачи с автоматически управляемым пулом и событиями обновления состояния.

Другие вопросы по тегам