Я понимаю принцип сопрограммы. Я знаю, как получить стандартный шаблон StartCoroutine
/yield return
для работы на С# в Unity, например. вызовите метод, возвращающий IEnumerator
через StartCoroutine
, и в этом методе сделайте что-нибудь, сделайте yield return new WaitForSeconds(1);
, чтобы подождать секунду, затем сделайте что-то еще.
Мой вопрос: что действительно происходит за кулисами? Что делает StartCoroutine
действительно? Что IEnumerator
возвращает WaitForSeconds
? Как StartCoroutine
вернуть управление части "что-то еще" вызываемого метода? Как все это взаимодействует с моделью Unity concurrency (где много вещей происходит одновременно без использования сопрограмм)?