일반적으로 메모리 요구 사항과 Go 루틴의 설정/제거 비용 측면에서 오버 헤드가 거의 없으므로 실용적인 스레드 풀을 구현하는 것도 관련이 있습니까? 요청 당 루틴을 '스폰'하는 대신 언제 스레드 풀을 사용 하시겠습니까?'스레드 풀링'은 Go와 관련이 있습니까?
-1
A
답변
2
골란에서 많은 양의 골 루틴을 산란시키고 유지하는 것은 저렴하지만 무료는 아닙니다.
또한 goroutine 자체는 매우 저렴할 수 있지만 동시에 많은 메모리가 goroutine 코드 내에 할당 될 수 있음을 기억해야합니다. 그래서 동시에 실행되는 goroutine의 수를 제한하고자 할 수 있습니다.
리소스를 제한하기 위해 세마포를 사용할 수 있습니다. 또 다른 접근법 (더 많은 관용적 인 방법)은 작업자 풀과 함께 실행 파이프 라인을 사용하는 것입니다. 이 패턴은 golang blog에 잘 설명되어 있습니다.
1
네, 맞습니다. db/sql은 새 연결에 시간이 걸리기 때문에 데이터베이스에 대한 연결 풀을 사용합니다.
+1
이것은 주제를 약간 벗어났습니다 - 풀링 데이터베이스 연결은 스레드 풀링과 완전히 같지 않습니다. –
관련 문제
- 1. 왜 객체의 가변성이 스레드 안전과 관련이 있습니까?
- 2. Mongodb와의 연결 풀링은 어떻게 사용합니까?
- 3. 레일 연결 풀링은 어떻게 작동합니까?
- 4. 핸들은 스레드와 어떤 관련이 있습니까?
- 5. objective-c에는 Go와 같은 온라인 놀이터가 있습니까?
- 6. 연결 풀링은 ODP.NET에 있어야합니까?
- 7. 글로벌 풀링은 무엇을합니까?
- 8. 리눅스 프로세스 스케줄링 정책은 스레드 스케줄링 정책과 어떤 관련이 있습니까?
- 9. Go와 Cython의 차이점
- 10. Go와 Ruby의 주요 차이점
- 11. 도커가있는 go와 postgres 연결하기
- 12. OS 스케줄러는 멀티 스레드 알고리즘과 관련이 없습니까?
- 13. Zend는 PHP와 관련이 있습니까? jQuery는 javascript와 관련이 있습니까?
- 14. eAccelerator와 아직 관련이 있습니까?
- 15. hadoop과 informica는 관련이 있습니까?
- 16. xmlhttprequest에서 jQuery.ajaxSettings.traditional과 관련이 있습니까?
- 17. Go와 Java로 Gae에서 Memcache 공유하기
- 18. go와 함께 Java를 사용하는 방법
- 19. 연결 풀링은 실제로 어떻게 작동합니까?
- 20. SQLDataadapter가 GO와 함께 작동하지 않습니다.
- 21. jwt-go와 토큰을 구문 분석
- 22. stacktrace.js의 숫자와 어떤 관련이 있습니까?
- 23. pecl은 여전히 php와 관련이 있습니까
- 24. 가상화는 여전히 도커와 관련이 있습니까?
- 25. spark.streaming.blockInterval은 RDD 파티션과 관련이 있습니까?
- 26. BCL은 CLS와 어떤 관련이 있습니까?
- 27. 자바 스크립트는 어디에서 관련이 있습니까?
- 28. 아나모픽은 렌즈와 어떤 관련이 있습니까?
- 29. PHP와 MySQL은 서로 관련이 있습니까?
- 30. JWT는 OAuth와 어떤 관련이 있습니까?
차단 IO를 사용하는 경우 goroutine 대신 스레드 풀을 사용하는 것이 좋습니다. – ymonad
@ymonad, IO 차단으로 무엇을 의미합니까? Go에서 모든 IO는 블로킹입니다.이 모든 것이 동시성 모델입니다. 내부적으로 네트워크 IO와 다른 파일 IO를 의미한다면, 문제는 goroutines에 관한 것이 아닙니다. syscall을 반환하기를 기다리는 실제 OS 스레드에 관한 것입니다. – creker
@crecker 내가 의도 한 바는 non-blocking 인 go 네트워크 라이브러리를 사용하는 것이었다. 그러나 goroutine의 M : N 쓰레드 모델의 이점을 얻을 것이다. IO를 차단하는 시스템 호출을 사용할 때 스케줄러가 바뀐다. goroutine 당 하나의 스레드를 생성하므로 스레드 풀을 사용하는 것이 옵션 일 수 있습니다. https://groups.google.com/forum/#!topic/golang-nuts/Luje-okL4jI – ymonad