Здравствуйте, 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, вот она асинхронная.