Skip to content

Instantly share code, notes, and snippets.

@14427
Last active December 12, 2015 01:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save 14427/4688550 to your computer and use it in GitHub Desktop.
Save 14427/4688550 to your computer and use it in GitHub Desktop.
Real channel fail
extern mod std;
use std::timer;
use std::uv;
fn sleep(ms: uint) {
let iotask = uv::global_loop::get();
timer::sleep(iotask, ms);
}
fn test2() {
let one = do vec::from_fn(3) |_| { pipes::stream() };
let two = do vec::from_fn(3) |_| { pipes::stream() };
let p1 = do one.mapi |i, &(p, c)| {
do spawn {
loop {
sleep(1000);
c.send(i)
}
}
p
};
let p2 = do two.mapi |i, &(p, c)| {
do spawn {
loop {
sleep(1000);
c.send(i)
}
}
p
};
for vec::each2(p1, p2) |&po1, &po2| {
do spawn {
loop {
error!("Left: %?", po1.try_recv());
error!("Right: %?", po2.try_recv()); // Not necessary to see bug
}
}
}
loop {} // Stay alive, remove to get crash
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment