diff options
Diffstat (limited to 'v_windows/v/old/examples/concurrency')
3 files changed, 63 insertions, 0 deletions
diff --git a/v_windows/v/old/examples/concurrency/concurrency.v b/v_windows/v/old/examples/concurrency/concurrency.v new file mode 100644 index 0000000..92a5517 --- /dev/null +++ b/v_windows/v/old/examples/concurrency/concurrency.v @@ -0,0 +1,18 @@ +import time + +// Simulate expensive computing using sleep function +fn expensive_computing(id int, duration int) { + println('Executing expensive computing task ($id)...') + time.sleep(duration * time.millisecond) + println('Finish task $id on $duration ms') +} + +fn main() { + mut threads := []thread{} + threads << go expensive_computing(1, 100) + threads << go expensive_computing(2, 500) + threads << go expensive_computing(3, 1000) + // Join all tasks + threads.wait() + println('All jobs finished!') +} diff --git a/v_windows/v/old/examples/concurrency/concurrency_http.v b/v_windows/v/old/examples/concurrency/concurrency_http.v new file mode 100644 index 0000000..b5b0b58 --- /dev/null +++ b/v_windows/v/old/examples/concurrency/concurrency_http.v @@ -0,0 +1,32 @@ +import net.http +import sync +import time + +fn vlang_time(mut wg sync.WaitGroup) ?string { + start := time.ticks() + data := http.get('https://vlang.io/utc_now') ? + finish := time.ticks() + println('Finish getting time ${finish - start} ms') + println(data.text) + wg.done() + return data.text +} + +fn remote_ip(mut wg sync.WaitGroup) ?string { + start := time.ticks() + data := http.get('https://api.ipify.org') ? + finish := time.ticks() + println('Finish getting ip ${finish - start} ms') + println(data.text) + wg.done() + return data.text +} + +fn main() { + mut wg := sync.new_waitgroup() + wg.add(2) + // Run tasks async + go vlang_time(mut wg) + go remote_ip(mut wg) + wg.wait() +} diff --git a/v_windows/v/old/examples/concurrency/concurrency_returns.v b/v_windows/v/old/examples/concurrency/concurrency_returns.v new file mode 100644 index 0000000..6d687e4 --- /dev/null +++ b/v_windows/v/old/examples/concurrency/concurrency_returns.v @@ -0,0 +1,13 @@ +fn expensive_computing(i int) int { + return i * i +} + +fn main() { + mut threads := []thread int{} + for i in 1 .. 10 { + threads << go expensive_computing(i) + } + // Join all tasks + r := threads.wait() + println('All jobs finished: $r') +} |