小编Sub*_*ena的帖子

使用BlockingCollections在队列中运行多个线程

我的程序有3个功能.每个函数都会获取一个项目列表并填充某些信息.例如

class Item {
 String sku,upc,competitorName;
 double price;
}
Run Code Online (Sandbox Code Playgroud)

函数F1采用List并填充upc

功能F2取List(F1的输出)并填写价格.

功能F3取List(输出F2)并填充competitorName

F1可以一次处理5个项目, F2可以一次处理20个项目,F3也可以处理20个项目 .

现在我正在连续运行F1 - > F2 - > F3,因为F2需要来自F1的信息(UPC代码).F3需要F2的价格.

我想通过连续运行F1运行而不是等待F2和F3完成来使这个过程高效.F1执行并输出到队列中,然后F2一次取20个项目并处理它们.然后跟随F3.

如何通过使用BlockingCollection和Queue来实现这一目标?

task-parallel-library blockingcollection

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

将基于C#BlockingCollection的代码转换为TPL数据流

我有一个特定的问题,我相信可以使用TPL数据流解决.我对此很陌生,所以需要你的帮助来加快我的理解.我的代码目前是这样的:

目前的代码

其中Process1,Process2,Process3均为Task.对象通过阻塞集合从一个块传递到另一个块.我想这样做:

需要这样的

我读到了TransformBlock,ActionBlock和BatchBlock ..您可以帮助我如何使用这些类来实现上述设计.

c# task-parallel-library tpl-dataflow

3
推荐指数
1
解决办法
301
查看次数