1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

coroutines: $if is_coroutine? {

This commit is contained in:
Alexander Medvednikov 2023-06-03 19:05:50 +02:00
parent 4e21b2ab4e
commit 6fe6fe887d
2 changed files with 17 additions and 0 deletions

View File

@ -3,6 +3,8 @@
// //
import coroutines import coroutines
import time import time
import os
import net.http
fn foo(a int) { fn foo(a int) {
for { for {
@ -12,9 +14,17 @@ fn foo(a int) {
} }
fn foo2(a int) { fn foo2(a int) {
mut i := 0
for { for {
println('hello from foo2() a=${a}') println('hello from foo2() a=${a}')
coroutines.sleep(2 * time.second) coroutines.sleep(2 * time.second)
i++
// resp := http.get('https://vlang.io/utc_now') or { panic(err) }
// resp := http.get('http://example.com') or { panic(err) }
// println(resp)
// mut f := os.create('/tmp/FOO2_a${i}') or { panic(err) }
// f.write_string(resp.body) or { panic(err) }
// f.close()
} }
} }
@ -29,6 +39,11 @@ fn main() {
go foo(10) go foo(10)
go foo2(20) go foo2(20)
go foo3(30) go foo3(30)
$if is_coroutine ? {
println('IS COROUTINE=true')
} $else {
println('IS COROUTINE=false')
}
for { for {
println('hello from MAIN') println('hello from MAIN')
coroutines.sleep(1 * time.second) coroutines.sleep(1 * time.second)

View File

@ -813,6 +813,8 @@ pub fn parse_args_and_show_errors(known_external_commands []string, args []strin
os.system('wget -O "${so_path}" "${so_url}"') os.system('wget -O "${so_path}" "${so_url}"')
println('done!') println('done!')
} }
res.compile_defines << 'is_coroutine'
res.compile_defines_all << 'is_coroutine'
} $else { } $else {
println('coroutines only work on arm64 macos for now') println('coroutines only work on arm64 macos for now')
} }