«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Влияние `runtime.gosched ()` до и после Go 1.5 On Go Программа выполнения

Влияние `runtime.gosched ()` до и после Go 1.5 On Go Программа выполнения

Опубликовано в 2025-04-14
Просматривать:527

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

Как Gosched влияет на выполнение программ GO

проблема

в версиях GO до 1.5, часть кода, включающего runtime.gosched () наблюдал за выходом программы:

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

hello мир привет мир привет мир привет мир hello

hello
world
hello
world
hello
world
hello
world
hello

hello привет привет привет hello

hello
hello
hello
hello
hello

в версиях Go до 1.5, runtime.gosched () явно дал контроль другим goroutines при вызове. В то время как программы GO запускаются по одному потоку ОС по умолчанию, Runtime.gosched () позволил планированию переключить выполнение между goroutines.

, когда Gomaxprocs не был установлен или установлен на 1, кооперативная многозадачность GO для явного контроля доходности. Таким образом, в приведенном выше примере кода вывод «мира» появился только при вызове Runtime.gosched (), так как он позволил планировщику переключиться на Goroutine, выполняя оператор «World». Это может создать несколько потоков ОС для запуска goroutines. Однако, в отличие от упреждающих многозадачных систем, Goroutines по -прежнему явно выпускает контроль, чтобы позволить другим goroutines выполнять. Это связано с тем, что GO использует кооперативную многозадачность, где goroutines добровольно сдает контроль планировщику.

значение для параллелизма

с Gomaxprocs, установленными на значение, превышающее 1, результат взаимосвязанного гуртинов может стать индивидуальным, как может переключаться между этими временем. Это может привести к непредсказуемым образцам вывода, как видно в примере выше, когда GomaxProcs был установлен на 2.

]
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3