Tag: 并行

系统设计: Fan-out/Fan-in 并发模式

Fan-out / fan-in 指的是一种并发模式:将工作拆分为多个单元并行执行,然后在所有任务完成后进行同步。虽然它经常在无服务器(serverless)函数的语境中被提及,但这一概念并不局限于无服务器架构。 更广义地说,fan-out / fan-in 是一种通用的并发模式,适用于任何可以将任务分解为相互独立部分的场景,例如线程、进程、Actor、微服务,甚至分布式作业,并在之后将结果汇聚起来。其核心思想是在执行阶段将工作并行展开(fan-out),在收敛阶段对各个分支的输出进行协调和聚合(fan-in),而不依赖于具体的执行模型或底层基础设施。 在实际工程中,fan-out / fan-in 模式常用于提升系统吞吐量和资源利用率,尤其适合 I/O 密集型或可并行计算的场景。通过将一个复杂任务拆分为多个相互独立的子任务并同时执行,可以显著缩短整体处理时间;而在 fan-in 阶段,对各个子任务的结果进行统一汇总、排序或合并,则有助于保持业务逻辑的完整性与一致性。不过,这种模式也需要注意并发控制、错误处理以及超时与重试机制,否则容易在高并发场景下引入资源争用、级联失败或结果不一致等问题。因此,在设计和实现 fan-out / fan-in 架构时,应结合具体场景权衡并发度、系统复杂度与稳定性。 英文:System Design: Fan-out/Fan-in Concurrency Pattern 本文一共 452 个汉字, 你数一下对不对. …

DELPHI 2007 下的 PARALLEL FOR 实现

Delphi XE7 之后 语法就加了 Parallel.For 用于多线程编程. 有一个第三方开源的库 OmniThreadLibrary (OTL) 也可以用 但是在 D2007 下由于没有 匿名函数和通用模板 一些OTL的高级语法就都不能用了. The AsyncCall 也是第三方开源的 库 支持 D2006到 XE2 但是也没有 Parallel.For 语法. 下面就简单在 D2007 下实现了 多线程 …

.NET 4.0 (4.5) 之后强大的平行 For, ForEach 语句用于多线程执行

.NET 4.0 之后 (e.g. 4.5) 添加了并行 For, ForEach 的支持.如果你的代码里有很多处 SIMD (单指令,多数据 Single Instruction Multiple Data). 就可以通过 Parallel.For 和 Parallel.ForEach 来进行多线程.使用方法非常简单:你不需要再手动创建几个线程,然后同时启动多线程,并等待它们的执行(同步). 首先,你需要引用这两个单元. using System.Threading; using System.Threading.Tasks; 为了演示方便,建立了一个长度为10的数组,元素是 Double 类型. double …