如何使用TPL处理长时间运行的进程

3

最近我开始学习C#中的TPL。我们有一个Windows服务,它执行一些功能。

I have to perform each job paralelly rather than  sequentially.

每个工作需要超过10分钟才能完成。因此,我把它视为长时间运行的进程。
所以,我认为我不会为此创建线程池,因为它适用于短时间线程。
如何使用TPL处理长时间运行的任务。假设我有100个作业要处理,
Do i need to create 100 tasks for long running process ?

请对上述内容进行澄清说明。

3
在创建任务时,您尝试过指定 TaskCreationOptions.LongRunning 吗?这样很可能就不会使用线程池了... - Jon Skeet
这个长时间运行的进程是CPU密集型还是I/O密集型? - Yuval Itzchakov
这是一个CPU密集型的进程。 - Sai Avinash
假设我有一百个任务要处理,我需要创建一百个线程吗? - Sai Avinash
@JohnSKeet。如果我有很多任务要处理,那么它会创建很多线程吗? - Sai Avinash
1个回答

4

使用TaskCreationOptions.LongRunning。它适用于可能会混淆线程池启发式方法的长时间运行工作。从.NET 4.5开始,它总是在新线程上运行您的代码。您仍然可以使用所有其他TPL功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接