给定n个并发量,并发处理数组

参考解析

题目来源:华为

解析:

n 个并发量,并发处理数组,处理完后放回数组内,使用到sync 包中的 WaitGroup 与 mutex 进行控制,假设 n 为 10,处理 长度为 20 的 int[] 类型数组,代码如下

  1. package main
  2. import (
  3. "fmt"
  4. "sync"
  5. )
  6. var wg sync.WaitGroup
  7. var m sync.Mutex
  8. func main() {
  9. a := make([]int, 20)
  10. for i := 0; i < 20; i++ {
  11. a[i] = i
  12. }
  13. wg.Add(10)
  14. fmt.Println(a)
  15. for i := 0; i < 20; i++ {
  16. go add(a, i)
  17. }
  18. wg.Done()
  19. fmt.Println(a)
  20. }
  21. func add(s []int, pos int) {
  22. m.Lock()
  23. defer m.Unlock()
  24. s[pos]++
  25. }