Re[10]: Можно ли избавиться от async|await?
От: mrTwister Россия  
Дата: 15.12.25 08:15
Оценка: 3 (2)
Здравствуйте, Doom100500, Вы писали:

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


T>>При вызове time.Sleep(1000) поток сразу отпускается и передается другой горутине. Тоже самое происходит при вызове Task.Delay в C#


D>Ок, дошло. Но почему вызов foo(), в которой обычные императивные вычисления — асинхронный? При условии, что там не используются ни sync, ни Sleep, ни каналы, ни select. Такой вызов и есть "по умолчанию".


Потому что компилятор принудительно в foo расставит точки останова, в которых будет отпускаться поток ОС. И даже если в foo крутится пустой бесконечный цикл, рантайм go через особые хаки такую точку останова туда внедрит.
лэт ми спик фром май харт
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.