aboutsummaryrefslogtreecommitdiff
path: root/v_windows/v/old/examples/concurrency
diff options
context:
space:
mode:
Diffstat (limited to 'v_windows/v/old/examples/concurrency')
-rw-r--r--v_windows/v/old/examples/concurrency/concurrency.v18
-rw-r--r--v_windows/v/old/examples/concurrency/concurrency_http.v32
-rw-r--r--v_windows/v/old/examples/concurrency/concurrency_returns.v13
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')
+}