понял как это работает. Но мы начали выполнять на потоке, в той реализации что я дебажил в качестве воркера у нас была future которая в себе содержала continuation и диспетчер, вот если мы при suspend должны освободить поток, следовательно воркер должен завершить свою работу, предположил что мы выходит из стейт машины и воркеру больше нечего делать, continuation мы передали другой suspend func но тут 2 варианта: 1. она выполняется на другом треде пуле, тогда она держит ссылку на наш continuation, но наш воркер (future) который содержал наш continuation он куда делся? Он же ушел с потока, но куда? Обартно в work queue? 2. Вариант она выполняется на одном треде пуле откуда была запущена коуртина, значит ли это что мы просто продолжим выполнение корутины на том же воркере (future) и в таком случае со стороны тред пула это будет казаться что future просто долго выполняется?
Чёт сложно, давайте без future, я немного не понимаю, каким они тут боком 🙂 А вообще выйти из метода != выйти из стейт-машины.
Обсуждают сегодня