"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > `runtime.gosched ()``전후 GO 전후 GO 프로그램 실행의 영향

`runtime.gosched ()``전후 GO 전후 GO 프로그램 실행의 영향

2025-04-14에 게시되었습니다
검색:726

How Does `runtime.Gosched()` Impact Go Program Execution Before and After Go 1.5?

GOSCHED가 GO 프로그램 실행에 어떻게 GO 프로그램의 실행에 영향을 미치는지

1.5 이전에 GO 버전에서 런타임을 포함하는 코드. i : = 0; I runtime.gosched ()가있는 output :
func say(s string) {
    for i := 0; i  hello
세계
안녕하세요
세계
안녕하세요
세계
안녕하세요
세계
hello 

runtime.gosched ()가없는 출력 :
func say(s string) {
    for i := 0; i  hello
안녕하세요
안녕하세요
안녕하세요
Hello 

설명
func say(s string) {
    for i := 0; i  

1.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