func say(s string) { for i := 0; i hello 세계 안녕하세요 세계 안녕하세요 세계 안녕하세요 세계 helloruntime.gosched ()가없는 출력 :
func say(s string) { for i := 0; i hello 안녕하세요 안녕하세요 안녕하세요 Hello설명
func say(s string) { for i := 0; i1.5 이전에 GO 버전에서 runtime.gosched () 호출 할 때 다른 고루틴에 대한 제어를 명시 적으로 산출했습니다. GO 프로그램은 기본적으로 단일 OS 스레드에서 실행되는 동안 runtime.gosched ()를 사용하면 스케줄러가 Goroutines간에 실행을 전환 할 수있었습니다. 따라서 위의 코드 예제에서 "World"출력은 runtime.gosched ()가 호출 될 때만 나타났습니다. 스케줄러가 "World"인쇄 문을 실행하는 Goroutine으로 전환 할 수 있었기 때문에
GomaxProcs 및 Cooperative Multitasking
go runmax. GO는 Goroutines를 실행하기 위해 여러 OS 스레드를 생성 할 수 있음을 의미합니다.
GomaxProcs가 1보다 큰 값으로 설정하면 Goroutines가 병렬로 실행될 수 있습니다. 그러나 선제 적 멀티 태스킹 시스템과 달리, 다른 고어 라인을 실행할 수 있도록 고 루틴은 여전히 명시 적으로 제어해야합니다. GO는 협력 멀티 태스킹을 사용하는데, 여기서 고루는 스케줄러에 자발적으로 제어를 항복합니다. 이로 인해 GomaxProcs가 2로 설정된 위의 예에서 볼 수 있듯이 예측할 수없는 출력 패턴이 발생할 수 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3