diff options
author | Jesse Luehrs <doy@tozt.net> | 2014-07-02 02:54:21 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2014-07-02 02:54:21 -0400 |
commit | e620daf3b1a40ae825c625bc4328fb7d2b3ee8b6 (patch) | |
tree | faa469408ee78623eaa8d2720dcbb36096788ca1 /examples/21_spawn.rs | |
download | intro-to-rust-yapc-na-2014-master.tar.gz intro-to-rust-yapc-na-2014-master.zip |
Diffstat (limited to 'examples/21_spawn.rs')
-rw-r--r-- | examples/21_spawn.rs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/examples/21_spawn.rs b/examples/21_spawn.rs new file mode 100644 index 0000000..770bb21 --- /dev/null +++ b/examples/21_spawn.rs @@ -0,0 +1,24 @@ +fn ack (m: uint, n: uint) -> uint { + match (m, n) { + (0, n) => n + 1, + (m, 0) => ack(m - 1, 1), + (m, n) => ack(m - 1, ack(m, n - 1)), + } +} +fn main () { + let (write, read) = channel(); + let (m, n) = (3, 10); + + spawn(proc () { + write.send(ack(m, n)); + }); + + let mut result = read.try_recv(); + while !result.is_ok() { + println!("."); + std::io::timer::sleep(100); + result = read.try_recv(); + } + println!("Ack({}, {}) = {}", m, n, result.unwrap_or_else(|e| { fail!(e) })); +} + |