Как обрабатывать длительный процесс с помощью TPL

#c# #task-parallel-library #long-running-processes

#c# #задача-параллельная-библиотека #длительные процессы

Вопрос:

Недавно я начал изучать TPL на C #. У нас есть служба Windows, которая выполняет некоторые функции.

 I have to perform each job paralelly rather than  sequentially.
  

Для выполнения каждого задания потребуется более 10 минут. Итак, я рассматриваю это как длительный процесс.

Итак, я думаю, я бы не стал создавать ThreadPool для этого, поскольку он предназначен для коротких потоков.

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

 Do i need to create 100 tasks for long running process ?
  

Пожалуйста, поясните выше.

Комментарии:

1. Вы пробовали указывать TaskCreationOptions.LongRunning при создании задачи? Тогда, скорее всего, пул потоков не будет использоваться…

2. Является ли длительный процесс процессом, связанным с ЦП, или процессом, связанным с вводом-выводом?

3. Это процесс, связанный с процессором

4. Предположим, у меня есть сотни заданий для обработки, нужно ли мне создавать 100 потоков?

5. @JohnSKeet. Если у меня будет много заданий для обработки, создаст ли это много потоков?

Ответ №1:

Используйте TaskCreationOptions.LongRunning . Он предназначен для длительной работы, которая может запутать эвристику пула потоков. Начиная с .NET 4.5, ваш код всегда выполняется в новом потоке. Вы все равно можете использовать все другие функции TPL.