>  기사  >  백엔드 개발  >  golang에서 코루틴을 시작하는 방법

golang에서 코루틴을 시작하는 방법

(*-*)浩
(*-*)浩원래의
2019-12-30 15:51:063340검색

golang에서 코루틴을 시작하는 방법

기본적으로 고루틴은 코루틴입니다. 차이점은 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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