import result::{ok, err};
fn fib(n: int) -> int {
- fn pfib(args: (chan<int>, int)) {
- let (c, n) = args;
+ fn pfib(c: chan<int>, n: int) {
if n == 0 {
send(c, 0);
} else if n <= 2 {
send(c, 1);
} else {
let p = port();
-
- let t1 = task::spawn((chan(p), n - 1), pfib);
- let t2 = task::spawn((chan(p), n - 2), pfib);
-
+ let ch = chan(p);
+ task::spawn {|| pfib(ch, n - 1); };
+ task::spawn {|| pfib(ch, n - 2); };
send(c, recv(p) + recv(p));
}
}
let p = port();
- let t = task::spawn((chan(p), n), pfib);
+ let ch = chan(p);
+ let t = task::spawn {|| pfib(ch, n); };
ret recv(p);
}
fn stress(num_tasks: int) {
let tasks = [];
range(0, num_tasks) {|i|
- tasks += [task::spawn_joinable(copy i, stress_task)];
+ tasks += [task::spawn_joinable {|| stress_task(i); }];
}
for t in tasks { task::join(t); }
}
fn f(&&n: uint) {
let i = 0u;
while i < n {
- task::join(task::spawn_joinable((), g));
+ task::join(task::spawn_joinable {|| g(); });
i += 1u;
}
}
10u
} else { uint::parse_buf(str::bytes(args[1]), 10u) };
let i = 0u;
- while i < n { task::spawn(copy n, f); i += 1u; }
+ while i < n { task::spawn {|| f(n); }; i += 1u; }
}
if vec::len(args) < 2u {
100u
} else { uint::parse_buf(str::bytes(args[1]), 10u) };
- uint::range(0u, 100u) {|i| task::spawn(copy n, f); }
+ uint::range(0u, 100u) {|i| task::spawn {|| f(n); };}
}
let tasks = [];
for i in inputs {
let m = map, c = ctrl, ii = i;
- tasks += [task::spawn_joinable(bind map_task(m, c, ii))];
+ tasks += [task::spawn_joinable {|| map_task(m, c, ii)}];
}
ret tasks;
}
none. {
// log(error, "creating new reducer for " + k);
let p = port();
+ let ch = chan(p);
let r = reduce, kk = k;
- tasks +=
- [task::spawn_joinable(bind reduce_task(r, kk,
- chan(p)))];
+ tasks += [
+ task::spawn_joinable {|| reduce_task(r, kk, ch) }
+ ];
c = recv(p);
treemap::insert(reducers, k, c);
}
use std;
import task;
-fn f(&&x: int) -> int { ret x; }
-
-fn main() { task::spawn(10, f); }
+fn main() { task::spawn(sendfn() -> int { 10 }); }
import comm::port;
import comm::recv;
-fn child(&&_i: ()) { assert (1 == 2); }
+fn child() { assert (1 == 2); }
fn main() {
let p = port::<int>();
- task::spawn((), child);
+ task::spawn {|| child(); };
let x = recv(p);
}
import comm::port;
import comm::recv;
-fn child(&&_i: ()) { fail; }
+fn child() { fail; }
fn main() {
let p = port::<int>();
- task::spawn((), child);
+ task::spawn {|| child(); };
task::yield();
}
import comm::port;
import comm::recv;
-fn grandchild(&&_i: ()) { fail; }
+fn grandchild() { fail "grandchild dies"; }
-fn child(&&_i: ()) {
+fn child() {
let p = port::<int>();
- task::spawn((), grandchild);
+ task::spawn {|| grandchild(); };
let x = recv(p);
}
fn main() {
let p = port::<int>();
- task::spawn((), child);
+ task::spawn {|| child(); };
let x = recv(p);
}
import comm::port;
import comm::recv;
-fn child(&&_args: ()) { assert (1 == 2); }
+fn child() { assert (1 == 2); }
-fn parent(&&_args: ()) {
+fn parent() {
let p = port::<int>();
- task::spawn((), child);
+ task::spawn {|| child(); };
let x = recv(p);
}
// This task is not linked to the failure chain, but since the other
// tasks are going to fail the kernel, this one will fail too
-fn sleeper(&&_args: ()) {
+fn sleeper() {
let p = port::<int>();
let x = recv(p);
}
fn main() {
- task::spawn((), sleeper);
- task::spawn((), parent);
+ task::spawn {|| sleeper(); };
+ task::spawn {|| parent(); };
}
\ No newline at end of file
}
fn main() {
- task::spawn((), fn (&&_i: ()) {
+ task::spawn {||
let r = and_then_get_big_again(());
getbig_call_c_and_fail(10000);
- });
+ };
}
\ No newline at end of file
}
fn main() {
- task::spawn(400, getbig_and_fail);
+ task::spawn {||
+ getbig_and_fail(400);
+ };
}
\ No newline at end of file
fn main() {
rustrt::set_min_stack(256u);
- task::spawn(1, getbig_and_fail);
+ task::spawn {||
+ getbig_and_fail(1);
+ };
}
\ No newline at end of file
// We don't want to see any invalid reads
fn main() {
- fn f(&&_i: ()) {
+ fn f() {
fail;
}
- task::spawn((), f);
+ task::spawn {|| f(); };
}
\ No newline at end of file
import task;
import comm;
-fn goodfail(&&_i: ()) {
+fn goodfail() {
task::yield();
fail "goodfail";
}
fn main() {
- task::spawn((), goodfail);
+ task::spawn {|| goodfail(); };
let po = comm::port();
// We shouldn't be able to get past this recv since there's no
// message available