고루틴 제한
2022.12.20 03:10
package main
import (
"fmt"
"math/rand"
"time"
)
// change this for your situation, 20 or 30, 1,000 or 10,000 may be too high
const MAX_CONCURRENT_JOBS = 2
func main() {
waitChan := make(chan struct{}, MAX_CONCURRENT_JOBS)
count := 0
for {
waitChan <- struct{}{}
count++
go func(count int) {
job(count)
<-waitChan
}(count)
}
}
func job(index int) {
fmt.Println(index, "begin doing something")
time.Sleep(time.Duration(rand.Intn(10) * int(time.Second)))
fmt.Println(index, "done")
}
output:
2 begin do something
1 begin do something
2 done
3 begin do something
1 done
4 begin do something
3 done
5 begin do something
5 done
6 begin do something
4 done
7 begin do something
6 done
8 begin do something
8 done
9 begin do something
출처: https://calmops.com/golang/golang-limit-total-number-of-goroutines
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
» | 고루틴 제한 | 꿈돌이 | 2022.12.20 | 101 |
6 | go mod vendor 안될 때 | 꿈돌이 | 2021.04.20 | 172 |
5 | Go 최신 버전 확인 | 꿈돌이 | 2021.03.07 | 229 |
4 | vscode-go로 컴파일 할 때 ldflags 달아주기 | 꿈돌이 | 2020.04.28 | 343 |
3 | go 업데이트 | 꿈돌이 | 2020.04.20 | 360 |
2 | vscode 에서 golang 자동완성 툴로 gopls 사용하기 | 꿈돌이 | 2019.08.13 | 15054 |
1 | go1.11 modules 사용 | 꿈돌이 | 2018.09.01 | 2083 |