aboutsummaryrefslogtreecommitdiff
path: root/exercises
diff options
context:
space:
mode:
authorDave Gauer <dave@ratfactor.com>2021-11-07 20:51:33 -0500
committerDave Gauer <dave@ratfactor.com>2021-11-07 20:51:33 -0500
commit8ff0cf67e113dd94eaa4f2cb9aa7afdac56e9633 (patch)
tree7d02121611582d9beb4e5c6c04edbc5bc581400c /exercises
parent4147a9a39b362468cc6f16c8ce751ee3481321f4 (diff)
downloadziglings-8ff0cf67e113dd94eaa4f2cb9aa7afdac56e9633.tar.gz
ziglings-8ff0cf67e113dd94eaa4f2cb9aa7afdac56e9633.tar.bz2
ziglings-8ff0cf67e113dd94eaa4f2cb9aa7afdac56e9633.tar.xz
ziglings-8ff0cf67e113dd94eaa4f2cb9aa7afdac56e9633.zip
Added ex91 - closing in on async!
Diffstat (limited to 'exercises')
-rw-r--r--exercises/091_async8.zig35
1 files changed, 35 insertions, 0 deletions
diff --git a/exercises/091_async8.zig b/exercises/091_async8.zig
new file mode 100644
index 0000000..cd9c975
--- /dev/null
+++ b/exercises/091_async8.zig
@@ -0,0 +1,35 @@
+//
+// You have doubtless noticed that 'suspend' requires a block
+// expression like so:
+//
+// suspend {}
+//
+// The suspend block executes when a function suspends. To get
+// sense for when this happens, please make the following
+// program print the string
+//
+// "ABCDEF"
+//
+const print = @import("std").debug.print;
+
+pub fn main() void {
+ print("A", .{});
+
+ var frame = async suspendable();
+
+ print("X", .{});
+
+ resume frame;
+
+ print("F", .{});
+}
+
+fn suspendable() void {
+ print("X", .{});
+
+ suspend {
+ print("X", .{});
+ }
+
+ print("X", .{});
+}