我正在学习如何使用TPL对我拥有的应用程序进行组件化。该应用程序处理ZIP文件,提取其中包含的所有文件,然后将内容导入数据库。在给定的时间可能有数千个zip文件正在等待处理。

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

谢谢。

最佳答案

这似乎是一个更适合使用ThreadPool而不是TPL管理的工作线程(每个文件使用单独的线程)的问题。当您可以分割和征服单个数据但zip文件被单独对待时,TPL很棒。

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

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

10-10 19:30