>백엔드 개발 >Golang >고루틴, 사용자 스레드, 커널 스레드: 차이점은 무엇인가요?

고루틴, 사용자 스레드, 커널 스레드: 차이점은 무엇인가요?

Susan Sarandon
Susan Sarandon원래의
2024-12-10 09:35:11289검색

Goroutines, User Threads, and Kernel Threads: What's the Difference?

고루틴, 사용자 스레드, 커널 스레드 구별

소개

고루틴의 개념 , 사용자 스레드 및 커널 스레드는 복잡한 내용을 탐색할 때 혼란스러울 수 있습니다. Go의 동시성 모델. 이 문서의 목적은 이러한 개념을 명확히 하고 관련 질문을 해결하는 것입니다.

질문 1: OS 스레드 및 고루틴 정의

질문:

  • "Effective Go" 소개에 고루틴이 언급되어 있습니다. "os 스레드"는 무엇을 의미합니까? 사용자 스레드입니까, 커널 스레드입니까?

답변:

  • "OS 스레드"는 커널 스레드를 의미합니다.

질문 2: 이동 중 P와 G 이해하기 스케줄러

질문:

  • P(프로세서/스케줄링 컨텍스트) 수가 CPU 코어 수와 같은 이유는 무엇입니까?
  • 모든 CPU가 Go 프로그램을 서비스하고 있다면, CPU를 필요로 하는 OS의 다른 프로그램은 어떻게 될까요? 할당?

답변:

  • P는 고루틴과 커널 스레드 사이의 매핑 계층 역할을 합니다. 커널 스레드당 하나의 P가 있습니다.
  • Go 프로그램은 기본적으로 사용 가능한 모든 CPU 코어를 할당할 수 있지만(GOMAXPROCS), 이는 다른 OS 프로세스의 실행을 방해하지 않습니다. 동시 작업이 있어도 프로세스는 I/O 작업을 기다리는 데 상당한 시간을 소비하므로 커널 스케줄러가 CPU 시간을 다른 프로그램에 할당할 수 있습니다.

질문 3: 커널 스레드 수 생성됨

질문:

  • OS 시스템에서는 몇 개의 커널 스레드가 생성됩니까?

답변:

  • OS에서 생성되는 커널 스레드 수는 동적이며 시스템 로드에 따라 달라집니다.

위 내용은 고루틴, 사용자 스레드, 커널 스레드: 차이점은 무엇인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.