From 08f82be0b96758fb65ac174f65dc801a210debde Mon Sep 17 00:00:00 2001 From: KaiserY Date: Mon, 7 May 2018 08:55:54 +0800 Subject: [PATCH] fix typo --- src/ch16-01-threads.md | 4 ++-- src/ch16-02-message-passing.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ch16-01-threads.md b/src/ch16-01-threads.md index fedf63a..7b82a22 100644 --- a/src/ch16-01-threads.md +++ b/src/ch16-01-threads.md @@ -238,7 +238,7 @@ fn main() { 示例 16-4: 一个具有闭包的线程,尝试使用一个在主线程中被回收的引用 `v` -这段代码可以运行,而新建线程则可能会立刻被转移到后台并完全没有机会运行。新建线程内部有一个 `v` 的引用,不过主线程立刻就使用第十五章讨论的 `drop` 丢弃了 `v`。接着当新建线程开始执行,`v` 已不再有效,所以其引用也是无效的。噢,这太糟了! +假如这段代码能正常运行的话,则新建线程则可能会立刻被转移到后台并完全没有机会运行。新建线程内部有一个 `v` 的引用,不过主线程立刻就使用第十五章讨论的 `drop` 丢弃了 `v`。接着当新建线程开始执行,`v` 已不再有效,所以其引用也是无效的。噢,这太糟了! 为了修复示例 16-3 的编译错误,我们可以听取错误信息的建议: @@ -271,7 +271,7 @@ fn main() { 示例 16-5: 使用 `move` 关键字强制获取它使用的值的所有权 -那么如何使用了 `move` 闭包,示例 16-4 中主线程调用了 `drop` 的代码会发生什么呢?不幸的是,我们会因为示例 16-4 尝试进行由于不同的原因所不允许的操作而得到不同的错误。如果为闭包增加 `move`,将会把 `v` 移动进闭包的环境中,如此将不能在主线程中对其调用 `drop` 了。我们会得到如下不同的编译错误: +那么如果使用了 `move` 闭包,示例 16-4 中主线程调用了 `drop` 的代码会发生什么呢?不幸的是,我们会因为示例 16-4 尝试进行由于不同的原因所不允许的操作而得到不同的错误。如果为闭包增加 `move`,将会把 `v` 移动进闭包的环境中,如此将不能在主线程中对其调用 `drop` 了。我们会得到如下不同的编译错误: ```text error[E0382]: use of moved value: `v` diff --git a/src/ch16-02-message-passing.md b/src/ch16-02-message-passing.md index 050bc47..da66615 100644 --- a/src/ch16-02-message-passing.md +++ b/src/ch16-02-message-passing.md @@ -92,7 +92,7 @@ fn main() { 通道的接收端有两个有用的方法:`recv` 和 `try_recv`。这里,我们使用了 `recv`,它是 *receive* 的缩写。这个方法会阻塞主线程执行直到从通道中接收一个值。一旦发送了一个值,`recv` 会在一个 `Result` 中返回它。当通道发送端关闭,`recv` 会返回一个错误表明不会再有新的值到来了。 -`try_recv` 不会阻塞,相反它立刻返回一个 `Result`:`Ok` 值包含可用的信息,而 `Err` 值代表此时没有任何消息。如果线程在等待消息过程中还有其他工作时使用 `try_recv` 很有用:可以编写一个循环来频繁调用 `try_recv`,再有可用消息时进行处理,其余时候则处理一会其他工作知道再次检查。 +`try_recv` 不会阻塞,相反它立刻返回一个 `Result`:`Ok` 值包含可用的信息,而 `Err` 值代表此时没有任何消息。如果线程在等待消息过程中还有其他工作时使用 `try_recv` 很有用:可以编写一个循环来频繁调用 `try_recv`,再有可用消息时进行处理,其余时候则处理一会其他工作直到再次检查。 处于简单的考虑,这个例子使用了 `recv`;主线程中除了等待消息之外没有任何其他工作,所以阻塞主线程是合适的。