v2 / vlib / v / slow_tests / comptime_if_expr_threads_test.v
27 lines · 22 sloc · 582 bytes · 6a32c810703f4ec0c39fe18298ebe6c40acac8f1
Raw
1import math { floor, sqrt }
2import arrays { sum }
3
4fn async(arr_size int, init_val f64) f64 {
5 mut val_arr := []f64{}
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)) or { f64(1) }
11}
12
13fn test_comptime_if_expr_of_threads() {
14 size := 2000_000
15
16 println('Async')
17 mut results := []thread f64{cap: 16}
18 for num in 0 .. 15 {
19 results << spawn async(size, num)
20 }
21 waited_results := results.wait()
22
23 println(waited_results)
24 sum_result := sum(waited_results) or { 1 }
25 println(sum_result)
26 assert sum_result == 4.7999976e+07
27}
28