并行模式深入解析:背景工作者与管道模式
并行任务模式初步
在数据生成场景中,单线程和多线程随机数据生成存在显著差异。通过对比发现,以 1MB 块生成 100MB 流时,使用 8 个并行任务能带来明显的速度提升,但将任务数量翻倍并不会带来更多优势。这表明数据生成可有效分布在系统的 8 个物理核心上,而在额外的 8 个超线程核心上运行则优势不大。并行任务模式是基于连接模式的一层封装,它让在多个线程上运行相同代码这一操作变得更简单且易于理解。
背景工作者模式详解
背景工作者模式是一种复杂且实用的模式,它建立了一个运行在多个线程上的后台服务器模块,可将数据包排队进行处理。该模块有自己的输入队列(一个阻塞集合)来存放未处理的数据,还有一个输出队列用于保存处理结果,直到结果返回给主线程。
背景工作者模式示例
为了更好地理解背景工作者模式,我们以一个论坛搜索工具为例。这个名为 ParallelBackgroundWorker 的演示程序提供了一个简单的用户界面,用户可以在编辑字段中输入搜索查询,点击搜索按钮后,程序会下载搜索结果,解析输出,并将每个页面的下载任务排队到背景工作者。文章标题旁边的复选框表示页面是否已下载。在任何时候,用户都可以输入新的搜索词并重新开始搜索。
以下是创建背景工作者模式的代码:
procedure TfrmBackgroundWorker.FormCreate(Sender: TObject);
begin
FBackgroundWorker :=
Parallel.BackgroundWorke
超级会员免费看
订阅专栏 解锁全文
172万+

被折叠的 条评论
为什么被折叠?



