]> git.lizzy.rs Git - rust.git/blob - src/test/run-pass/task-comm-14.rs
e37eb15ce39e74c16f0314bcf23e3e02ea741f10
[rust.git] / src / test / run-pass / task-comm-14.rs
1 use std;
2 import comm;
3 import task;
4
5 fn main() {
6     let po = comm::port::<int>();
7
8     // Spawn 10 tasks each sending us back one int.
9     let i = 10;
10     while (i > 0) {
11         log(debug, i);
12         task::spawn((i, comm::chan(po)), child);
13         i = i - 1;
14     }
15
16     // Spawned tasks are likely killed before they get a chance to send
17     // anything back, so we deadlock here.
18
19     i = 10;
20     let value = 0;
21     while (i > 0) {
22         log(debug, i);
23         value = comm::recv(po);
24         i = i - 1;
25     }
26
27     #debug("main thread exiting");
28 }
29
30 fn child(&&args: (int, comm::chan<int>)) {
31     let (x, ch) = args;
32     log(debug, x);
33     comm::send(ch, x);
34 }