add ex086 async 3
parent
54c048b0a0
commit
3e5647d88c
@ -0,0 +1,29 @@
|
||||
//
|
||||
// Because they can suspend and resume, async Zig functions are
|
||||
// an example of a more general programming concept called
|
||||
// "coroutines". One of the neat things about Zig async functions
|
||||
// is that they retain their state as they are suspended and
|
||||
// resumed.
|
||||
//
|
||||
// See if you can make this program print "5 4 3 2 1".
|
||||
//
|
||||
const print = @import("std").debug.print;
|
||||
|
||||
pub fn main() void {
|
||||
const n = 5;
|
||||
var foo_frame = async foo(n);
|
||||
|
||||
???
|
||||
|
||||
print("\n", .{});
|
||||
}
|
||||
|
||||
fn foo(countdown: u32) void {
|
||||
var current = countdown;
|
||||
|
||||
while (current > 0) {
|
||||
print("{} ", .{current});
|
||||
current -= 1;
|
||||
suspend;
|
||||
}
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
16c16,21
|
||||
< ???
|
||||
---
|
||||
> // Silly solution. You can also use a loop.
|
||||
> resume foo_frame;
|
||||
> resume foo_frame;
|
||||
> resume foo_frame;
|
||||
> resume foo_frame;
|
||||
> resume foo_frame;
|
Loading…
Reference in New Issue