v2 / vlib / v / tests / generics / generics_array_of_threads_test.v
23 lines · 21 sloc · 495 bytes · 6488041a749df9762348d019c4223908c476f2e2
Raw
1fn async_map[T](arr []T, func fn (T) T) []T {
2 mut threads := []thread T{}
3 for element in arr {
4 threads << spawn func(element)
5 }
6 return threads.wait()
7}
8
9fn test_generic_array_of_threads() {
10 arr1 := [1, 2, 3, 4]
11 results1 := async_map(arr1, fn (a int) int {
12 return -a
13 })
14 println(results1)
15 assert results1 == [-1, -2, -3, -4]
16
17 arr2 := [1.0, 2.0, 3.0, 4.0]
18 results2 := async_map(arr2, fn (a f64) f64 {
19 return -a
20 })
21 println(results2)
22 assert results2 == [-1.0, -2.0, -3.0, -4.0]
23}
24