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.

在 一 个 发 配 了 的 子 线 程 里 抛 出 的 例 外 也 不 再 通 过 join 传 播 , 因 为 它 们 将 不 再 被 使 用 。 在 顶层 函 数 里 合 理 使 用 eval {}, 你 可 能 会 找 到 其 他 汇 报 错 误 的 方 法 。17.2.1.5 标 识 线 程每 个 <strong>Perl</strong> 线 程 都 有 一 个 唯 一 的 线 程 标 识 , 由 tid 对 象 方 法 返 回 :$his_tidno = $t1->tid();一 个 线 程 可 以 通 过 Thread->self 调 用 访 问 它 自 己 的 线 程 对 象 。 不 要 把 这 个 和 线 程 ID 混淆 : 要 获 得 自 身 的 线 程 ID, 一 个 线 程 可 以 这 样 :$mytid = Thread->self->tid();#$$ 是 线 程 , 和 以 前 一 样要 拿 一 个 线 程 对 象 和 另 外 一 个 做 比 较 , 用 下 列 之 一 :Thread::equal($t1, $t2)$t1->equal($t2)$t1->tid() == $td->tid()17.2.1.6 列 出 当 前 线 程你 可 以 用 Thread->list 类 方 法 调 用 在 当 前 进 程 获 取 一 个 当 前 线 程 对 象 的 列 表 。 该 列 表 包括 运 行 着 的 现 成 和 已 经 退 出 但 还 未 连 接 的 线 程 。 你 可 以 在 任 何 线 程 里 做 这 个 工 作 :for my $t (Thread->list()) { printf "$t has tid = %d\n", $t->tid(); }17.2.1.7 交 出 处 理 器Thread 模 块 支 持 一 个 重 要 的 函 数 , 叫 yield。 它 的 工 作 是 令 调 用 它 的 线 程 放 弃 处 理 器 。 不幸 的 是 , 这 个 函 数 具 体 干 的 事 情 完 全 依 赖 于 你 所 的 线 程 的 实 现 方 式 。 不 管 怎 样 , 我 们 还 是 认为 它 是 一 个 偶 然 放 弃 CPU 的 控 制 的 很 好 的 手 势 。use Thread 'yield';yield();你 不 必 使 用 圆 括 号 。 从 语 法 上 来 讲 , 这 样 可 能 更 安 全 , 因 为 这 样 能 捕 获 看 起 来 无 法 避 免 的“yeild” 的 错 误 输 入 :460

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

Saved successfully!

Ooh no, something went wrong!