summary refs log tree commit diff
path: root/src/test/run-pass/send-iloop.rs
blob: 5fb4e4e9bd9e43293bdfd186935e6b11f469b7e3 (plain)
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
// xfail-win32
use std;
import task;
import comm;
import uint;

fn die() {
    fail;
}

fn iloop() {
    task::unsupervise();
    task::spawn {|| die(); };
    let p = comm::port::<()>();
    let c = comm::chan(p);
    while true {
        // Sending and receiving here because these actions yield,
        // at which point our child can kill us
        comm::send(c, ());
        comm::recv(p);
    }
}

fn main() {
    uint::range(0u, 16u) {|_i|
        task::spawn {|| iloop(); };
    }
}