本篇解析 example-sync-05.kt。探讨一种更高效的单线程环境同步方案。
1. 核心概念:整体限制
与“细粒度”在循环内部切换线程不同,“粗粒度”方案将整个协程任务流都放在同一个单线程内执行。
代码解析
1 | val counterContext = newSingleThreadContext("CounterContext") |
- 性能提升:由于去掉了频繁的线程切换开销,执行速度远快于方案 04。
- 结果:Counter = 100000 (准确且高效)。
2. 开发者感悟
这种方案在 UI 开发(如 Android 主线程更新)中非常常见。如果你的业务逻辑本质上就是串行的,且涉及大量状态修改,直接在单线程作用域内运行它是最简单的同步手段。它比加锁更轻快,也更易于理解。