13.07.2015 Views

Perl 语言编程 - Linux教程

Perl 语言编程 - Linux教程

Perl 语言编程 - Linux教程

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Pulled Thread=SCALAR(0x8117200) from queuePulled HASH(0x80dfd8c) from queue请 注 意 当 我 们 通 过 一 个 async 闭 合 域 启 动 一 个 异 步 线 程 的 时 候 $Q 在 范 围 里 是 怎 样 的 。线 程 和 <strong>Perl</strong> 里 的 其 他 东 西 一 样 遵 守 同 样 的 范 围 规 则 。 如 果 $Q 在 async 调 用 之 后 才 声明 , 那 么 上 面 的 例 子 就 不 能 运 行 了 。17.2.3.2. 信 号 灯Thread::Semaphre 给 你 提 供 了 线 程 安 全 的 计 数 信 号 灯 对 象 , 你 可 以 用 它 来 实 现 你 自 己 的p() 和 v() 操 作 。 因 为 我 们 大 部 分 人 都 不 把 这 些 操 作 和 荷 兰 语 的 passeer (“ 回 合 ”) 和verlaat(“ 树 叶 ”) 联 系 在 一 起 , 所 以 此 模 块 把 这 些 操 作 相 应 称 做 “ 向 下 ” 和 “ 向 上 ”。( 在 有些 文 化 里 , 它 们 叫 “ 等 ” 和 “ 信 号 ”。) 此 模 块 支 持 下 面 的 方 法 :方 法 用 途new 构 造 一 个 新 的 Thread::Semaphore。down 分 配 一 个 或 更 多 项 目 。up 析 构 一 个 或 者 更 多 项 目 。new 方 法 创 建 一 个 新 的 信 号 灯 并 且 把 它 初 始 化 为 声 明 的 初 始 计 数 。 如 果 没 有 声 明 初 始 数 值 ,则 该 信 号 灯 的 初 始 值 设 置 为 1。( 数 字 代 表 某 些 条 目 的 “ 池 ”, 如 果 所 有 数 字 都 分 配 完 了 则它 们 会 “ 用 光 ”。)use Thread::Semaphore;$mutex = Thread::Semaphore->new($MAX);down 方 法 把 信 号 灯 的 计 数 值 减 去 所 声 明 的 数 值 , 如 果 没 有 给 出 此 数 值 则 为 1。 你 可 以 认为 它 是 一 个 分 配 某 些 或 者 所 有 资 源 的 动 作 。 如 果 信 号 灯 计 数 减 到 零 以 下 , 这 个 方 法 会 阻 塞 住直 到 信 号 灯 计 数 等 于 或 者 大 于 你 要 求 的 数 量 。 用 下 面 的 方 法 调 用 它 :$mutex->down();up 方 法 给 该 信 号 灯 的 计 数 值 加 指 定 的 数 值 , 如 果 没 有 给 出 此 数 值 则 为 1。 你 可 以 认 为 这 是一 个 释 放 原 先 分 配 的 资 源 的 动 作 。 这 样 的 操 作 至 少 要 解 除 一 个 因 为 试 图 down 这 个 信 号 等而 阻 塞 住 的 线 程 。 用 下 面 这 样 的 方 法 调 用 :$mutex->up();17.2.3.3 其 他 标 准 线 程 模 块471

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!