小编Dav*_*vid的帖子

多线程循环,同时保持顺序

我开始乱用多线程来处理我正在运行的CPU密集型批处理.基本上我正在尝试将多个单页tiff压缩成单个PDF文档.这适用于foreach循环或标准迭代,但对于几百页文档来说可能非常慢.我尝试了以下基于我发现使用多线程的一些示例,并且它具有显着的性能改进但是它消除了页面顺序而不是1,2,3,4它将是1,3,4,2,6,5 on什么线程首先完成.

我的问题是如何在维护页面顺序的同时利用这种技术,如果可以,它会否定多线程的性能优势?先感谢您.

PdfDocument doc = new PdfDocument();
string mail = textBox1.Text;
string[] split = mail.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);

int counter = split.Count();

// Source must be array or IList.
var source = Enumerable.Range(0, 100000).ToArray();
// Partition the entire source array.
var rangePartitioner = Partitioner.Create(0, counter);
double[] results = new double[counter];
// Loop over the partitions in parallel.
Parallel.ForEach(rangePartitioner, (range, loopState) =>
{
    // Loop over each range element without a delegate invocation.
    for (int i = range.Item1; …
Run Code Online (Sandbox Code Playgroud)

c# parallel-processing multithreading

6
推荐指数
1
解决办法
1199
查看次数

标签 统计

c# ×1

multithreading ×1

parallel-processing ×1