aboutsummaryrefslogtreecommitdiff
path: root/tests/actor/accept/parallel.zc
diff options
context:
space:
mode:
Diffstat (limited to 'tests/actor/accept/parallel.zc')
-rw-r--r--tests/actor/accept/parallel.zc18
1 files changed, 18 insertions, 0 deletions
diff --git a/tests/actor/accept/parallel.zc b/tests/actor/accept/parallel.zc
new file mode 100644
index 0000000..3d47f34
--- /dev/null
+++ b/tests/actor/accept/parallel.zc
@@ -0,0 +1,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;
+}