고루틴, 사용자 스레드, 커널 스레드 구별
소개
고루틴의 개념 , 사용자 스레드 및 커널 스레드는 복잡한 내용을 탐색할 때 혼란스러울 수 있습니다. Go의 동시성 모델. 이 문서의 목적은 이러한 개념을 명확히 하고 관련 질문을 해결하는 것입니다.
질문 1: OS 스레드 및 고루틴 정의
질문:
- "Effective Go" 소개에 고루틴이 언급되어 있습니다. "os 스레드"는 무엇을 의미합니까? 사용자 스레드입니까, 커널 스레드입니까?
답변:
질문 2: 이동 중 P와 G 이해하기 스케줄러
질문:
- P(프로세서/스케줄링 컨텍스트) 수가 CPU 코어 수와 같은 이유는 무엇입니까?
- 모든 CPU가 Go 프로그램을 서비스하고 있다면, CPU를 필요로 하는 OS의 다른 프로그램은 어떻게 될까요? 할당?
답변:
- P는 고루틴과 커널 스레드 사이의 매핑 계층 역할을 합니다. 커널 스레드당 하나의 P가 있습니다.
- Go 프로그램은 기본적으로 사용 가능한 모든 CPU 코어를 할당할 수 있지만(GOMAXPROCS), 이는 다른 OS 프로세스의 실행을 방해하지 않습니다. 동시 작업이 있어도 프로세스는 I/O 작업을 기다리는 데 상당한 시간을 소비하므로 커널 스케줄러가 CPU 시간을 다른 프로그램에 할당할 수 있습니다.
질문 3: 커널 스레드 수 생성됨
질문:
- OS 시스템에서는 몇 개의 커널 스레드가 생성됩니까?
답변:
- OS에서 생성되는 커널 스레드 수는 동적이며 시스템 로드에 따라 달라집니다.
위 내용은 고루틴, 사용자 스레드, 커널 스레드: 차이점은 무엇인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!