вопрос по тому как работает async внутри
я прочел https://rust-lang.github.io/async-book
но у меня остался вопрос как именно происходит возвращение выполнения в async ф-ции
например, в dotnet компилятор физчески делит ф-цию на части из которых потом делат цепочку callback'ов и создает state-объекты чтобы перекидывать состояние в этот callback.
в rust есть waker который является частью task/future и сообщает executor'у что он готов продолжить выполнение, только как executor понимает что ему надо продолжить выполнения с места где был вызван .await, он же не держит mutex на каждый await, так?
посоветуйте что лучше почитать посмотреть
https://tmandry.gitlab.io/blog/posts/optimizing-await-1/
Обсуждают сегодня