31、并行模式深入解析:背景工作者与管道模式

并行模式深入解析:背景工作者与管道模式

并行任务模式初步

在数据生成场景中,单线程和多线程随机数据生成存在显著差异。通过对比发现,以 1MB 块生成 100MB 流时,使用 8 个并行任务能带来明显的速度提升,但将任务数量翻倍并不会带来更多优势。这表明数据生成可有效分布在系统的 8 个物理核心上,而在额外的 8 个超线程核心上运行则优势不大。并行任务模式是基于连接模式的一层封装,它让在多个线程上运行相同代码这一操作变得更简单且易于理解。

背景工作者模式详解

背景工作者模式是一种复杂且实用的模式,它建立了一个运行在多个线程上的后台服务器模块,可将数据包排队进行处理。该模块有自己的输入队列(一个阻塞集合)来存放未处理的数据,还有一个输出队列用于保存处理结果,直到结果返回给主线程。

背景工作者模式示例

为了更好地理解背景工作者模式,我们以一个论坛搜索工具为例。这个名为 ParallelBackgroundWorker 的演示程序提供了一个简单的用户界面,用户可以在编辑字段中输入搜索查询,点击搜索按钮后,程序会下载搜索结果,解析输出,并将每个页面的下载任务排队到背景工作者。文章标题旁边的复选框表示页面是否已下载。在任何时候,用户都可以输入新的搜索词并重新开始搜索。

以下是创建背景工作者模式的代码:

procedure TfrmBackgroundWorker.FormCreate(Sender: TObject);
begin
    FBackgroundWorker :=
        Parallel.BackgroundWorke
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值