// expect: 0 3 // a plain global is each actor's own; only a shared variable of a hold block is seen by all namespace; include rt, actor; typecheck on; let plain = 0; hold { shared let seen = 0; fn note() { seen++; return seen; } fn seen_now() { return seen; } } int work(int n) { plain = plain + n; note(); return plain; } fn main() { actor.Actor* a = rt.new(actor.Actor), b = rt.new(actor.Actor), c = rt.new(actor.Actor); a.spawn(work); b.spawn(work); c.spawn(work); a.send(5); b.send(6); c.send(7); a.recv(fn(int n) { return 0; }); b.recv(fn(int n) { return 0; }); c.recv(fn(int n) { return 0; }); a.await(); b.await(); c.await(); rt.put_n(plain); rt.put_c(' '); rt.put_n(seen_now()); rt.put_c(10); a.close(); b.close(); c.close(); return 0; }