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.

你 可 以 用 两 种 方 法 之 一 派 生 线 程 , 要 么 是 用 Thread->new 类 方 法 或 者 使 用 async 函数 。 不 管 那 种 方 法 , 返 回 值 都 是 一 个 Thread 对 象 。Thread->new 接 收 一 个 要 运 行 的 表示 某 函 数 的 代 码 引 用 以 及 传 给 那 个 函 数 的 参 数 :use Thread;...$t = Thread->new(\&func, $arg1, $arg2);你 通 常 会 想 传 递 一 个 闭 合 域 做 第 一 个 参 数 而 省 略 其 他 的 参 数 :my $something;$t = Thread->new( sub {say{$something} } );对 这 种 特 殊 的 例 子 ,async 函 数 提 供 了 一 些 符 号 上 的 解 放 ( 就 是 语 法 糖 ):use Thread qw(async);...my $something;$t = async {say($something);};你 会 注 意 到 我 们 明 确 地 输 入 了 async 函 数 。 你 当 然 可 以 用 全 称 的 Thread::async 代 换 ,不 过 那 样 你 的 语 法 糖 就 不 够 甜 了 。 因 为 async 只 包 含 一 个 闭 合 域 , 所 以 你 想 放 进 去 的 任 何东 西 都 必 须 是 一 个 在 传 入 是 的 范 围 的 一 个 词 法 变 量 。17.2.1.2 线 程 删 除一 旦 开 始 —— 并 且 开 始 遭 受 你 的 线 程 库 的 反 复 无 常 —— 该 线 程 将 保 持 运 行 直 到 它 的 顶 层 函数 ( 就 是 你 传 给 构 造 器 的 函 数 ) 返 回 。 如 果 你 想 提 前 终 止 一 个 线 程 , 只 需 要 从 那 个 顶 层 函 数中 return 就 行 了 。( 注 : 不 要 调 用 exit! 那 样 就 试 图 停 止 你 的 整 个 进 程 , 并 且 可 能 会 成功 。 但 实 际 上 该 进 程 直 到 所 有 线 程 都 退 出 之 后 才 能 退 出 , 而 且 有 些 线 程 在 exit 的 时 候 可 能拒 绝 退 出 。 我 们 稍 后 有 更 多 内 容 。)457

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

Saved successfully!

Ooh no, something went wrong!