aboutsummaryrefslogtreecommitdiff
path: root/src/test/run-fail/task-comm-14.rs
blob: e2ac165cc1ef15d98890fd4b3a306a980a206b9e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// xfail-boot
// xfail-stage0
// xfail-stage1
// xfail-stage2
io fn main() {
    let port[int] po = port();

    // Spawn 10 tasks each sending us back one int.
    let int i = 10;
    while (i > 0) {
        log i;
        spawn "child" child(i, chan(po));
        i = i - 1;
    }

    // Spawned tasks are likely killed before they get a chance to send 
    // anything back, so we deadlock here.
    
    i = 10;
    let int value = 0;
    while (i > 0) {
        log i;
        value <- po;
        i = i - 1;
    }
  
    log "main thread exiting";
}

io fn child(int x, chan[int] ch) {
    log x;
    ch <| x;
}