v/vlib/v/tests/array_of_threads_wait_test.v

37 lines
665 B
V

import math { floor, sqrt }
fn async(arr_size int, init_val f64) f64 {
mut val_arr := []f64{}
for _ in 1 .. arr_size {
val_arr << floor((sqrt(init_val) / 2) * 3)
}
return sum(val_arr.map(it / 2))
}
fn sum(val_arr []f64) f64 {
mut result := f64(0)
for val in val_arr {
result += val
}
return result
}
fn test_array_of_threads_wait() {
size := 2000_000
init_val := 123456
println('Async')
mut results := []thread f64{len: 16, cap: 16}
for num in 0 .. 15 {
results << go async(size, init_val + num)
}
waited_results := results.wait()
println(waited_results)
println(sum(waited_results))
assert sum(waited_results) == 7.9049960475e+09
}