#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.