Есть ли .Net эквивалент java.util.concurrent.Executor? - PullRequest
12 голосов
/ 30 мая 2009

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

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

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

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

Спасибо

Ответы [ 5 ]

5 голосов
/ 30 мая 2009

Возможно, вы захотите взглянуть на библиотеку параллелей задач .

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

2 голосов
/ 30 мая 2009

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

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

1 голос
/ 30 мая 2009

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

Для более старого подхода на основе потоков есть ThreadPool для объединения.

0 голосов
/ 16 июня 2018

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

0 голосов
/ 30 мая 2009

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

...