기본적으로 고루틴은 코루틴입니다. 차이점은 Golang은 장기 실행이나 시스템 호출이 발생할 때 런타임 및 시스템 호출과 같은 여러 측면에서 고루틴 스케줄링을 캡슐화하고 처리한다는 것입니다. (추천 학습: go)
은 다른 고루틴을 예약하고 실행할 수 있도록 현재 고루틴의 CPU(P)를 적극적으로 이전합니다. 이는 언어에서 Golang입니다. 레벨 코루틴이 지원됩니다.
Golang의 주요 기능 중 하나는 기본적으로 언어 수준에서 코루틴을 지원한다는 것입니다. 함수나 메서드 앞에 go 키워드를 추가하여 코루틴을 만들 수 있습니다.
다른 측면에서의 비교
메모리 사용량
#🎜🎜 # 각 고루틴(코루틴)은 기본적으로 Java 및 C 스레드보다 훨씬 적은 메모리를 차지합니다. goroutine: 2KB Thread: 8MB스레드 및 goroutine 전환 예약 오버헤드# 🎜 🎜#스레드/고루틴 전환 오버헤드 측면에서 고루틴은 스레드보다 훨씬 작습니다
스레드: 모드 전환(사용자 모드에서 커널 모드로 전환), 16개 레지스터, PC, SP... 및 다른 레지스터 새로 고침 등
goroutine: 세 개의 레지스터 값만 수정됩니다(PC/SP/DX). Go 런타임에서 관리하는 대규모 스레드 구현입니다.
함수 호출 전에 go 키워드를 추가하면 호출이 새로운 고루틴에서 동시에 실행됩니다. 호출된 함수가 반환되면 이 고루틴도 자동으로 종료됩니다. 이 함수에 반환 값이 있으면 반환 값이 삭제된다는 점에 유의하세요.
먼저 아래 프로그램 코드를 살펴보세요.
func Add(x, y int) { z := x + y fmt.Println(z) } func main() { for i:=0; i<10; i++ { go Add(i, i) } }위 코드를 실행하면 화면에 아무 것도 인쇄되지 않는 것을 확인할 수 있습니다. 그러면 프로그램이 종료됩니다.
위 내용은 golang에서 코루틴을 시작하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!