一、CPU 密集型协程任务取消
----
在 协程中 , 定义在 kotlinx.coroutines 包下的 suspend 挂起函数 是可以取消的 ;
但是有一种协程任务 , CPU 密集型协程任务..., 大量的临时数据会丢失 , 因此在协程中 , 无法直接取消 CPU 密集型协程任务 , 这是对协程的保护措施 ;
CPU 密集型协程任务取消示例 : 在下面的 协程任务 中 , 循环 10000000...| 取消中 | 已取消 )
代码示例 : 在下面的代码中 , 执行 CPU 密集型任务 , 循环 10000000 次进行运算 , 然后在每次循环时 , 都调用 isActive 判定当前的协程是否被取消...----
在协程中 , 可以执行 ensureActive() 函数 , 在该函数中会 自自动判定当前的 isActive 状态 , 如果当前处于取消中状态 , 自动抛出 CancellationException...yieldContext = YieldContext()
cont.dispatchYield(context + yieldContext, Unit)
// 仅能在已有的无约束循环中屈服的无约束调度程序的特殊情况