기본적으로 고루틴은 코루틴입니다.
차이점은 Golang이 런타임, 시스템 호출 등 여러 측면에서 고루틴 스케줄링을 캡슐화하고 처리한다는 것입니다. 장기 실행이나 시스템 호출이 발생하면 고루틴의 CPU(P)를 적극적으로 사용합니다. )는 다른 고루틴을 예약하고 실행할 수 있도록 전송됩니다. 즉, Golang은 언어 수준에서 코루틴을 지원합니다.
Golang의 주요 기능 중 하나는 기본적으로 언어 수준에서 코루틴을 지원한다는 것입니다. 함수나 메서드 앞에 go 키워드를 추가하면 코루틴을 만들 수 있습니다. (권장 학습: go)
Coroutine은 Go 언어의 경량 스레드 구현이며 Go 런타임에 의해 관리됩니다.
GO 버전: go 버전 go1.4.2 linux/amd64
테스트 환경:
[root@localhost mpro]# more /proc/cpuinfo | grep "model name" model name : Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz model name : Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz model name : Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz model name : Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz [root@localhost mpro]# [root@localhost mpro]# grep MemTotal /proc/meminfo MemTotal: 3868776 kB [root@localhost mpro]# getconf LONG_BIT 64 [root@localhost mpro]# more /etc/redhat-release CentOS Linux release 7.1.1503 (Core)
테스트 사례:
package main import ( "time" ) func main() { for i := 0; i < 200000; i++ { go func() { time.Sleep(5 * time.Second) }() } time.Sleep(10 * time.Second) }
프로그램 실행 전:
top - 18:53:19 up 19 min, 3 users, load average: 0.00, 0.04, 0.11 Tasks: 522 total, 1 running, 521 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.1 us, 0.2 sy, 0.0 ni, 99.6 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st KiB Mem : 3868776 total, 3327732 free, 235764 used, 305280 buff/cache KiB Swap: 2097148 total, 2097148 free, 0 used. 3397344 avail Mem#🎜🎜 #
프로그램 실행 후:
top - 18:53:37 up 19 min, 3 users, load average: 0.00, 0.04, 0.11 Tasks: 524 total, 1 running, 523 sleeping, 0 stopped, 0 zombie %Cpu(s): 1.2 us, 10.6 sy, 0.0 ni, 88.2 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st KiB Mem : 3868776 total, 2793732 free, 752512 used, 322532 buff/cache KiB Swap: 2097148 total, 2097148 free, 0 used. 2880016 avail Mem
요약: 200,000개의 코루틴이 500M 메모리와 500,000KB를 차지합니다.#🎜🎜 # # 🎜🎜#코루틴은 평균 2.5KB를 차지합니다
위 내용은 golang 코루틴은 얼마나 많은 메모리를 차지합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!