golang의 코루틴과 스레드의 차이점
일반적으로 코루틴은 경량 수준 스레드와 같습니다.
스레드에는 일반적으로 고정된 스택과 고정된 크기가 있습니다. 리소스 낭비(또는 리소스 부족)를 방지하기 위해 고루틴은 동적 확장 및 축소 전략을 채택합니다. 초기 금액은 2,000개이고 최대 금액은 1G까지 확장할 수 있습니다.
각 스레드에는 스레드가 생성될 때 반환되는 ID가 있으므로 스레드 ID를 통해 스레드를 조작할 수 있습니다. 하지만 golang에는 그런 개념이 없기 때문에 코딩 초기에 코루틴 생성과 해제를 고려해야 합니다.
스레드 및 고루틴 전환 예약 오버헤드 측면에서
스레드/고루틴 전환 오버헤드 측면에서 고루틴은 스레드보다 훨씬 작습니다
스레드: 모드 전환(사용자 모드에서 커널 모드로 전환), 16개 레지스터 새로 고침, PC, SP... 및 기타 레지스터 등이 포함됩니다.
코루틴은 사용자 모드에서 코루틴 스케줄러에 의해 완성되고 커널에 갇힐 필요가 없기 때문에 비용이 적습니다.
그래서 goroutine: 단지 3개의 레지스터 값 수정 - PC / SP / DX.
관련 권장사항: golang tutorial
위 내용은 golang에서 코루틴과 스레드의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!