Информация об изменениях

Сообщение Re[11]: Можно ли избавиться от async|await? от 16.12.2025 9:46

Изменено 16.12.2025 9:48 mrTwister

Re[11]: Можно ли избавиться от async|await?
Здравствуйте, Shmj, Вы писали:

S>Здравствуйте, mrTwister, Вы писали:


T>>Дак я не в потоке вызывал. Выделил главное. Ключевое слово "go" не в потоке запускает


S>В потоке (для каждого go создается свой поток), вот доказательство: https://go.dev/play/p/oDoPGmB7QU1


Блин, не не спорь пожалуйста, ты же понятия не имеешь, как работает go, но споришь

S>Если бы не в потоке, то вывод был бы последовательный — а так какая успела — та первой счетчик и изменила.


Нет конечно, time.Sleep создает под капотом таймер, который при срабатывании вызывает continuation у горутины. В зависимости от того, в каком порядке сработали эти таймеры, получится разный порядок цифр.

Go выполняет горутины в тредпуле, но размер этого тредпула фиксирован и определяется при старте программы (по умолчанию равен количеству ядер процессора). При этом ты можешь запустить свою программу с переменной окружения GOMAXPROCS=1, в этом случае для выполнения всех горутин будет использоваться один единственный поток ОС
Re[11]: Можно ли избавиться от async|await?
Здравствуйте, Shmj, Вы писали:

S>Здравствуйте, mrTwister, Вы писали:


T>>Дак я не в потоке вызывал. Выделил главное. Ключевое слово "go" не в потоке запускает


S>В потоке (для каждого go создается свой поток), вот доказательство: https://go.dev/play/p/oDoPGmB7QU1


Блин, не не спорь пожалуйста, ты же понятия не имеешь, как работает go, но споришь

S>Если бы не в потоке, то вывод был бы последовательный — а так какая успела — та первой счетчик и изменила.


Нет конечно, time.Sleep создает под капотом таймер, который при срабатывании вызывает continuation у горутины. В зависимости от того, в каком порядке сработали эти таймеры, получится разный порядок цифр.

Go выполняет горутины в тредпуле, но размер этого тредпула фиксирован и определяется при старте программы (по умолчанию равен количеству ядер процессора). При этом ты можешь запустить свою программу с переменной окружения GOMAXPROCS=1, в этом случае для выполнения всех горутин будет использоваться один единственный поток ОС, что не помешает всем горутинам выполняться "одновременно", то есть конкурентно.