1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
namespace;
include rt, actor;
typecheck on;
int delayed(int n) { rt.syscall(48, 300, 0, 0); return n + 1; }
fn main() {
actor.Actor<int, int>* a = rt.new(actor.Actor<int, int>), b = rt.new(actor.Actor<int, int>);
let first = 0, second = 0;
a.spawn(delayed); b.spawn(delayed);
a.recv(fn(int value) { first = value; return 0; });
b.recv(fn(int value) { second = value; return 0; });
let started = rt.syscall(50, 0, 0, 0);
a.send(10); b.send(20);
rt.put_n(first); rt.put_c(' '); rt.put_n(second); rt.put_c(10);
a.await(); b.await();
rt.put_n(first); rt.put_c(' '); rt.put_n(second); rt.put_c(10);
rt.put_n(rt.syscall(50, 0, 0, 0) - started); rt.put_c(10);
a.close(); b.close(); return 0;
}
|