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

fn die() {
    fail;
}

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

fn main() {
    for uint::range(0u, 16u) |_i| {
        let builder = task::builder();
        task::unsupervise(builder);
        task::run(builder, || iloop() );
    }
}