本篇解析 example-sync-04.kt。探讨一种利用单线程环境解决并发冲突的方案。
1. 核心概念:单一线程限制
如果所有的修改操作都发生在一个固定的单线程内,那么并发冲突就自然消失了。
代码解析
1 | val counterContext = newSingleThreadContext("CounterContext") |
- 代价:由于每次加法都要从多线程池切回单线程,再切回去,性能开销极大。
2. 开发者感悟
这种细粒度的切换(在循环内部 withContext)是非常低效的。在实际开发中,我们应该尽量避免在高频循环中切换线程。这种方案虽然结果准确,但速度非常慢。