有很多关于同步线程的资源,即何时以及如何启动它们 但是,我想以有序的方式启动Threads并检索输出结果。
例如,如果我有:
线程1输出:数据1
线程2输出:数据2
线程3输出:数据3
我会顺序启动线程(线程1,2,3),我想检索有序列表中的数据(数据1,2,3)。如您所知,我无法保证线程2将在线程3之前完成并提供其输出。因此,当线程提供所需的输出时,我需要一些有效的方法来重新引入顺序性和顺序。
编辑:
非常重要的精度(由评论员指出):
线程池将全天候运行,数据不是固定集,而是数据流。
另外,由于传统问题,我必须使用.Net 3.5。
答案 0 :(得分:1)
这里的一个好选择是使用PLINQ。
它允许您编写创建数据的查询,如下所示:
var results = inputData.AsParallel().AsOrdered().Select(inputValue => ComputeOutputData(inputValue));
在这种情况下,对AsOrdered的调用将允许查询并行运行,但您的结果会以适当的原始顺序返回。