Skip to content

Commit b735e6b

Browse files
committed
doc: Fix deadlocks in tutorial due to yield bustage
1 parent ad8010f commit b735e6b

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

doc/tutorial-tasks.md

+6-3
Original file line numberDiff line numberDiff line change
@@ -492,7 +492,8 @@ either task fails, it kills the other one.
492492

493493
~~~
494494
# use std::task;
495-
# fn sleep_forever() { loop { task::yield() } }
495+
# use std::comm::oneshot;
496+
# fn sleep_forever() { loop { let (p, c) = oneshot::<()>(); p.recv(); } }
496497
# do task::try {
497498
do spawn {
498499
do spawn {
@@ -513,9 +514,10 @@ before returning. Hence:
513514

514515
~~~
515516
# use std::comm::{stream, Chan, Port};
517+
# use std::comm::oneshot;
516518
# use std::task::{spawn, try};
517519
# use std::task;
518-
# fn sleep_forever() { loop { task::yield() } }
520+
# fn sleep_forever() { loop { let (p, c) = oneshot::<()>(); p.recv(); } }
519521
# do task::try {
520522
let (receiver, sender): (Port<int>, Chan<int>) = stream();
521523
do spawn { // Bidirectionally linked
@@ -543,7 +545,8 @@ an intermediate generation has already exited:
543545

544546
~~~
545547
# use std::task;
546-
# fn sleep_forever() { loop { task::yield() } }
548+
# use std::comm::oneshot;
549+
# fn sleep_forever() { loop { let (p, c) = oneshot::<()>(); p.recv(); } }
547550
# fn wait_for_a_while() { for _ in range(0, 1000u) { task::yield() } }
548551
# do task::try::<int> {
549552
do task::spawn_supervised {

0 commit comments

Comments
 (0)