Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork3.4k
Code rust concurrency
Huon Wilson edited this pageNov 14, 2013 ·2 revisions
use std::cell::Cell;use std::comm::SharedChan;fnload_image(url: ~str) -> ~[u8]{ ~[0,1,2]}// Object://fn load_image(url: ~str) -> ~[u8];enumImageLoaderMsg{LoadImage(~str,Chan<~[u8]>),Exit}fnmain(){let urlto_load = ~"foo.png";let(port, chan) =stream::<ImageLoaderMsg>(); do spawn{ loop{ match port.recv(){LoadImage(url, result_chan) =>{let image =load_image(url); result_chan.send(image);}Exit =>break}}}// make a load image requestlet shared_chan =SharedChan::new(chan);for _inrange(0,10){let new_chan = shared_chan.clone();do spawn{ let(result_port, result_chan) =stream(); new_chan.send(LoadImage(~"image.png", result_chan));let image = result_port.recv();println!("{:?}", image);}} shared_chan.send(Exit);}