blob: e53a12a87cf6fc38e02d63467ffc2c63ceae8f29 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
namespace;
include rt, actor;
typecheck on;
actor Counter { int value; fn add(int n) { this.value += n; return this.value; } int handle(int n) { return this.add(n); } }
fn main() {
actor.Actor<int, int>* a = rt.new(actor.Actor<int, int>), b = rt.new(actor.Actor<int, int>);
let state = 0, aresult = 0, bresult = 0;
a.spawn(fn(int n) { state += n; return state; });
b.spawn(fn(int n) { state += n; return state; });
a.recv(fn(int n) { aresult = n; return 0; }); b.recv(fn(int n) { bresult = n; return 0; });
a.send(2); a.send(3); b.send(7); a.await(); b.await();
rt.put_n(state); rt.put_c(' '); rt.put_n(aresult); rt.put_c(' '); rt.put_n(bresult); rt.put_c(10);
Counter c; c.value = 0; c.add(4); rt.put_n(c.value); rt.put_c(10);
a.close(); b.close(); return 0;
}
|