"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > O impacto do `RUNTIME.GOSCHED ()` Antes e depois da execução do programa GO 1.5 no Go

O impacto do `RUNTIME.GOSCHED ()` Antes e depois da execução do programa GO 1.5 no Go

Postado em 2025-04-14
Navegar:736

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

como o Gosched afeta a execução de programas Go

Problem

nas versões GO antes de 1.5, um pedaço de código envolvendo RunTime.gosched () foi observado para afetar a saída de um programa:

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

hello mundo olá mundo olá mundo olá mundo Hello

hello
world
hello
world
hello
world
hello
world
hello

hello olá olá olá Olá

hello
hello
hello
hello
hello

nas versões GO antes de 1.5, RunTime.gosched () produziu explicitamente o controle para outros goroutines quando chamado. Enquanto os programas GO são executados em um único thread do sistema operacional por padrão, RunTime.gosched () permitiu que o agendador alterasse a execução entre Goroutines. Assim, no exemplo de código acima, a saída "mundo" apareceu apenas quando a execução do tempo.Gosched () foi chamada, pois permitia que o agendador mudasse para a goroutine executando a declaração de impressão "mundial". Esse go pode criar vários threads do sistema operacional para executar goroutines. No entanto, diferentemente dos sistemas de multitarefa preventivos, as goroutinas ainda devem produzir explicitamente o controle para permitir que outras goroutinas sejam executadas. Isso ocorre porque o GO usa multitarefa cooperativa, onde as goroutinas entregam voluntariamente o controle ao agendador. Isso pode levar a padrões de saída imprevisíveis, como visto no exemplo acima, quando o gomaxprocs foi definido como 2.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3