pull/572/head
sunface 3 years ago
commit 51372c3599

@ -226,7 +226,7 @@ fn main() {
thread::sleep(Duration::from_secs(3)); thread::sleep(Duration::from_secs(3));
println!("睡眠之后"); println!("睡眠之后");
println!("收到值 {}", rx.recv().unwrap()); println!("receive {}", rx.recv().unwrap());
handle.join().unwrap(); handle.join().unwrap();
} }
``` ```
@ -239,7 +239,7 @@ fn main() {
发送之后 发送之后
//···睡眠3秒 //···睡眠3秒
睡眠之后 睡眠之后
收到值 1 receive 1
``` ```
主线程因为睡眠阻塞了 3 秒,因此并没有进行消息接收,而子线程却在此期间轻松完成了消息的发送。等主线程睡眠结束后,才姗姗来迟的从通道中接收了子线程老早之前发送的消息。 主线程因为睡眠阻塞了 3 秒,因此并没有进行消息接收,而子线程却在此期间轻松完成了消息的发送。等主线程睡眠结束后,才姗姗来迟的从通道中接收了子线程老早之前发送的消息。
@ -279,11 +279,11 @@ fn main() {
发送之前 发送之前
//···睡眠3秒 //···睡眠3秒
睡眠之后 睡眠之后
收到值 1 receive 1
发送之后 发送之后
``` ```
可以看出,主线程由于睡眠被阻塞导致无法接收消息,因此子线程的发送也一直被阻塞,直到主线程结束睡眠并成功接收消息后,发送才成功:**发送之后**的输出是在**收到值 1**之后,说明**只有接收消息彻底成功后,发送消息才算完成**。 可以看出,主线程由于睡眠被阻塞导致无法接收消息,因此子线程的发送也一直被阻塞,直到主线程结束睡眠并成功接收消息后,发送才成功:**发送之后**的输出是在**receive 1**之后,说明**只有接收消息彻底成功后,发送消息才算完成**。
#### 消息缓存 #### 消息缓存

Loading…
Cancel
Save