diff options
| author | Brian Anderson <banderson@mozilla.com> | 2013-08-06 13:25:09 -0700 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2013-08-07 16:32:20 -0700 |
| commit | b735e6b1041125f3237ff1f807455b2017f13e42 (patch) | |
| tree | 51c0ddb4e402ce746f0d005e48abdedc7b0c7b05 | |
| parent | ad8010fdf20da90cf3ca06a278a6b9b9bda048fd (diff) | |
| download | rust-b735e6b1041125f3237ff1f807455b2017f13e42.tar.gz rust-b735e6b1041125f3237ff1f807455b2017f13e42.zip | |
doc: Fix deadlocks in tutorial due to yield bustage
| -rw-r--r-- | doc/tutorial-tasks.md | 9 |
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 { |
