Розбираємося, як у
kotlinx.coroutines працює скасування: чим відрізняються
cancel(),
join() і
cancelAndJoin(), чому скасування корутин кооперативне, де розташовані «точки зупинки» (наприклад,
delay()) і як писати власні цикли так, щоб вони коректно реагували на скасування через
isActive. Наприкінці — практичний сценарій із «довгим звітом» і розбір типових помилок.