|
@@ -0,0 +1,29 @@
|
|
|
+//
|
|
|
+// So, 'suspend' returns control to the place from which it was
|
|
|
+// called (the "call site"). How do we control back to the
|
|
|
+// suspended function?
|
|
|
+//
|
|
|
+// For that, we have a new keyword called 'resume' which takes an
|
|
|
+// async function invocation's frame and returns control to it.
|
|
|
+//
|
|
|
+// fn fooThatSuspends() void {
|
|
|
+// suspend;
|
|
|
+// }
|
|
|
+//
|
|
|
+// var foo_frame = async fooThatSuspends();
|
|
|
+// resume foo_frame;
|
|
|
+//
|
|
|
+// See if you can make this program print "Hello async!".
|
|
|
+//
|
|
|
+const print = @import("std").debug.print;
|
|
|
+
|
|
|
+pub fn main() void {
|
|
|
+ var foo_frame = async foo();
|
|
|
+}
|
|
|
+
|
|
|
+fn foo() void {
|
|
|
+ print("Hello ", .{});
|
|
|
+ suspend;
|
|
|
+ print("async!\n", .{});
|
|
|
+}
|
|
|
+
|