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

Сообщение Re[6]: Можно ли избавиться от async|await? от 14.12.2025 14:54

Изменено 14.12.2025 14:54 mrTwister

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

D>Тогда в чём разница между этими вызовами?


Я не понял, что ты хотел продемонстрировать этими примерами

D>Какой поток операционной системы?


D>https://go.dev/tour/concurrency/1

D>

D>A goroutine is a [b]lightweight[b] thread managed by the Go runtime.


Главное слово выделил, горутина — это внутренняя структура в go, которая не имеет никакого отношения к потокам. Это что-то типа класса Task в C#

D>Программа на любом языке состоит из, как минимум, одного потока, который не блокирует современную многозагачную операционную сицтему.


Разница в том, что если, например в C# я запущу параллельно 1000 функций Thread.Sleep, то я создам и заблокирую 1000 потоков операционной системы, потому что Thread.Sleep синхронная. Если я запущу в go в горутинах 1000 функций time.Sleep, я не создам ни одного дополнительного потока операционной системы, потому что time.Sleep как и все остальные функции в go асинхронная. Аналогом time.Sleep из go является в .net Task.Delay, вот она асинхронная.
Re[6]: Можно ли избавиться от async|await?
Здравствуйте, Doom100500, Вы писали:

D>Тогда в чём разница между этими вызовами?


Я не понял, что ты хотел продемонстрировать этими примерами

D>Какой поток операционной системы?


D>https://go.dev/tour/concurrency/1

D>

D>A goroutine is a lightweight thread managed by the Go runtime.


Главное слово выделил, горутина — это внутренняя структура в go, которая не имеет никакого отношения к потокам. Это что-то типа класса Task в C#

D>Программа на любом языке состоит из, как минимум, одного потока, который не блокирует современную многозагачную операционную сицтему.


Разница в том, что если, например в C# я запущу параллельно 1000 функций Thread.Sleep, то я создам и заблокирую 1000 потоков операционной системы, потому что Thread.Sleep синхронная. Если я запущу в go в горутинах 1000 функций time.Sleep, я не создам ни одного дополнительного потока операционной системы, потому что time.Sleep как и все остальные функции в go асинхронная. Аналогом time.Sleep из go является в .net Task.Delay, вот она асинхронная.