diff --git a/src/service/host_manage.go b/src/service/host_manage.go index 148898fcf7447a08e2635236b19d8dcb63911a62..d60d69e1d7998b9c96b1b36034b57ad7c7cc8ff2 100644 --- a/src/service/host_manage.go +++ b/src/service/host_manage.go @@ -456,21 +456,25 @@ func (h *HostManageSvc) ListStateHostManage(req request.StateHostManageReq) (err // 使用协程批量执行 ping 命令 var wg sync.WaitGroup + var lock sync.Mutex wg.Add(len(hostManageList)) successHost := make([]int, 0) fail := make([]int, 0) for i := 0; i < len(hostManageList); i++ { - go func() { - i = i + go func(i int) { //修改状态 connStatus := StatusDetection(hostManageList[i].Ip) if connStatus == 1 { + lock.Lock() fail = append(fail, hostManageList[i].Id) + lock.Unlock() } else { + lock.Lock() successHost = append(successHost, hostManageList[i].Id) + lock.Unlock() } - wg.Done() - }() + defer wg.Done() + }(i) } wg.Wait()