v2 / vlib / v / tests / builtin_arrays / array_of_threads_wait_test.v
36 lines · 28 sloc · 668 bytes · 6488041a749df9762348d019c4223908c476f2e2
Raw
1import math { floor, sqrt }
2
3fn async(arr_size int, init_val f64) f64 {
4 mut val_arr := []f64{}
5
6 for _ in 1 .. arr_size {
7 val_arr << floor((sqrt(init_val) / 2) * 3)
8 }
9
10 return sum(val_arr.map(it / 2))
11}
12
13fn sum(val_arr []f64) f64 {
14 mut result := f64(0)
15
16 for val in val_arr {
17 result += val
18 }
19
20 return result
21}
22
23fn test_array_of_threads_wait() {
24 size := 2000_000
25 init_val := 123456
26 println('Async')
27 mut results := []thread f64{len: 16, cap: 16}
28 for num in 0 .. 15 {
29 results << spawn async(size, init_val + num)
30 }
31 waited_results := results.wait()
32
33 println(waited_results)
34 println(sum(waited_results))
35 assert sum(waited_results) == 7.9049960475e+09
36}
37