about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2013-08-06 13:25:09 -0700
committerBrian Anderson <banderson@mozilla.com>2013-08-07 16:32:20 -0700
commitb735e6b1041125f3237ff1f807455b2017f13e42 (patch)
tree51c0ddb4e402ce746f0d005e48abdedc7b0c7b05
parentad8010fdf20da90cf3ca06a278a6b9b9bda048fd (diff)
downloadrust-b735e6b1041125f3237ff1f807455b2017f13e42.tar.gz
rust-b735e6b1041125f3237ff1f807455b2017f13e42.zip
doc: Fix deadlocks in tutorial due to yield bustage
-rw-r--r--doc/tutorial-tasks.md9
1 files changed, 6 insertions, 3 deletions
diff --git a/doc/tutorial-tasks.md b/doc/tutorial-tasks.md
index b5677a261c4..d9e4b9b399d 100644
--- a/doc/tutorial-tasks.md
+++ b/doc/tutorial-tasks.md
@@ -492,7 +492,8 @@ either task fails, it kills the other one.
 
 ~~~
 # use std::task;
-# fn sleep_forever() { loop { task::yield() } }
+# use std::comm::oneshot;
+# fn sleep_forever() { loop { let (p, c) = oneshot::<()>(); p.recv(); } }
 # do task::try {
 do spawn {
     do spawn {
@@ -513,9 +514,10 @@ before returning. Hence:
 
 ~~~
 # use std::comm::{stream, Chan, Port};
+# use std::comm::oneshot;
 # use std::task::{spawn, try};
 # use std::task;
-# fn sleep_forever() { loop { task::yield() } }
+# fn sleep_forever() { loop { let (p, c) = oneshot::<()>(); p.recv(); } }
 # do task::try {
 let (receiver, sender): (Port<int>, Chan<int>) = stream();
 do spawn {  // Bidirectionally linked
@@ -543,7 +545,8 @@ an intermediate generation has already exited:
 
 ~~~
 # use std::task;
-# fn sleep_forever() { loop { task::yield() } }
+# use std::comm::oneshot;
+# fn sleep_forever() { loop { let (p, c) = oneshot::<()>(); p.recv(); } }
 # fn wait_for_a_while() { for _ in range(0, 1000u) { task::yield() } }
 # do task::try::<int> {
 do task::spawn_supervised {