我有一组文件,我需要并行处理它们。处理包括将每个文件上载到FTP服务器作为最后一步。这个服务器上的同时连接数量是有限的,比方说是2.我使用Parallel.Foreach()
这样:
Parallel.ForEach(files, options, ProcessFile);
我是否保证转到Parallel.ForEach
ParallelOptions options = new ParallelOptions { MaxDegreeOfParallelism = 2 };
我不会超过允许的连接数量?我已经阅读了很多关于Parallel.ForEach
如何运作的内容,但我仍然不确定。我认为我是FTP服务器的唯一用户,并且在ProcessFile
期间每个连接都正常关闭。
答案 0 :(得分:2)
是的,这将确保您最多同时运行两个任务。假设没有其他进程或任务正在向该服务器进行任何上传,那么您应该没问题。
我建议在你的foreach循环中使用一个信号量,因为那时实际的处理可以同时完成两个以上的任务。如果处理是占用大部分时间的部分,则可以提高性能。