多线程编程全面解析
1. 并行迭代执行
在某些场景中,我们需要对集合中的每个文件进行加密处理,并且希望并行执行以提高效率。例如,可以通过调用特定的方法,让 API 动态确定高效的线程数量来实现并行操作。其效率由“爬山”算法决定,即持续创建额外线程,直到额外线程的开销开始降低整体性能,此时便确定了最有效的线程数量。并行度对应于在任何特定时间同时运行的线程数量。
1.1 并行异常处理
在并行执行查询时,每个开始的迭代都可能抛出异常,因此可能会出现多个异常。当循环执行过程中抛出异常时,异常类型通常是System.AggregateException,它可以包含多个内部异常。这样,我们可以使用单个try/catch块来处理循环中的所有异常。以下是一个示例代码:
using System; using System.Collections.Generic; using System.IO; class Program { // ... static void EncryptFiles( string directoryPath, string searchPattern) { IEnumerable<string> files = Directory.GetFiles( directoryPath, searchPattern, SearchOption.AllDirectories); try {