multithreading - C# TPL 任务 - 一次有多少

标签 multithreading c#-4.0 task-parallel-library

我正在学习如何使用 TPL 来解析我拥有的应用程序。该应用程序处理 ZIP 文件,提取其中保存的所有文件并将内容导入数据库。在给定时间可能有数千个 zip 文件等待处理。

我是否正确为每个 ZIP 文件启动了一个单独的任务,或者这是使用 TPL 的一种低效方式?

谢谢。

最佳答案

这似乎是一个更适合使用 ThreadPool 而不是 TPL 管理的工作线程(每个文件的单独线程)的问题。当您可以对单个数据项进行分而治之但您的 zip 文件被单独处理时,TPL 非常棒。

磁盘 I/O 将成为您的瓶颈,因此我认为您需要限制同时运行的作业数量。用工作线程管理这个很简单,但我不确定你对并行的(如果不是)有多少控制(如果不是),就并行性如何同时进行而言,这可能会阻塞你的进程并实际上减慢它的速度。

关于multithreading - C# TPL 任务 - 一次有多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4452230/

相关文章:

c# - 限制复制和粘贴 URL 以打开页面

jquery - 循环 Controller 返回的json数据

c# - Parallel.ForEach 中的多个异步等待链接

用于性能评估的java统计收集

java - 在线程中获取和设置标志变量

c# - 可重载运算符 == 和 !=

c# - .Net 中的多个 Parallel.ForEach 循环

task-parallel-library - 有保证的方法来取消挂起的任务吗?

java - 出于可扩展性目的,不使用 ConcurrentHashMap 并发访问 Java Map

java - 调用所有并行类线程的方法