架 构 设 计 : 生 产者/消费者模式 为 了 方 便 阅 读 , 把 本 系 列 帖 子 的 目 录 整 理 如 下 : 0、概述 1、如 何确定数据单元 2、队列 缓冲区 3、环形缓冲区 4、双缓冲区 [0]: 概述 今 天 打 算 来 介 绍 一 下 “生 产 者 / 消 费 者 模 式 ”,这 玩 意 儿 在 很 多 开 发 领 域 都 能派 上 用 场 。 由 于 该 模 式 很 重 要 , 打 算 分 几 个 帖 子 来 介 绍 。 今 天 这 个 帖 子 先 来 扫 盲一 把 。 如 果 你 对 这 个 模 式 已 经 比 较 了 解 ,请 跳 过 本 扫 盲 帖 , 直 接 看 下 一 个 帖 子 ( 关于 该 模 式 的 具 体 应 用 ) 。 看 到 这 里 , 可 能 有 同 学 心 中 犯 嘀 咕 了 : 在 四 人 帮 ( GOF) 的 23种 模 式 里 面 似乎 没 听 说 过 这 种 嘛 ! 其 实 GOF那 经 典 的 23种 模 式 主 要 是 基 于 OO的 ( 从 书 名《 Design Patterns: Elements of Reusable Object-Oriented Software》 就 可以 看 出 来 ) 。 而Pattern实 际 上 即 可 以 是OO的 Pattern, 也 可 以 是 非 OO的Pattern的 。 ★简 介 言 归 正 传 ! 在 实 际 的 软 件 开 发 过 程 中 , 经 常 会 碰 到 如 下 场 景 : 某 个 模 块 负 责 产生 数 据 , 这 些 数 据 由 另 一 个 模 块 来 负 责 处 理 ( 此 处 的 模 块 是 广 义 的 , 可 以 是 类 、函数 、线程 、进程 等) 。 产 生 数 据 的 模 块 , 就 形象地称为生 产 者 ;而 处 理 数 据 的模 块 , 就 称为消 费 者 。 单单抽象出 生 产 者 和消 费 者 , 还够不上 是 生 产 者 / 消 费 者 模 式 。 该 模 式 还需要有 一 个 缓冲区处 于 生 产 者 和消 费 者 之间, 作为一 个 中 介 。 生 产 者 把 数 据 放入缓冲区, 而 消 费 者 从 缓冲区取出 数 据 。 大概的 结构如 下 图。 为 了 不 至 于 太 抽 象 , 我 们 举 一 个 寄 信 的 例 子 ( 虽 说 这 年 头 寄 信 已 经 不 时 兴 , 但这 个 例 子 还 是...