本篇解析 example-sync-07.kt。探讨如何利用“消息传递”而非“共享状态”来解决并发冲突。
1. 核心概念:什么是 Actor?
Actor 是由一个状态(State)、一个行为(Behavior)以及一个信箱(Channel)组合而成的实体。
工作原理:
- 私有状态:状态被封装在 Actor 内部,外部无法直接修改。
- 消息驱动:外部只能通过向 Actor 的 Channel 发送消息来请求修改或查询状态。
- 串行处理:Actor 内部会按顺序、一个个地处理接收到的消息,从而天然地避免了并发冲突。
2. 代码解析 (Counter Actor)
1 | // 定义消息类型 |
3. 开发者总结
“不要通过共享内存来通信,而要通过通信来共享内存。” Actor 模式完美地实践了这一哲学。它比锁(Mutex)更高级,因为它将状态管理逻辑彻底解耦到了一个独立的后台任务中。在处理复杂的、多来源的状态更新(如 Android 应用中的全局设置同步、长连接状态维护)时,Actor 模式是目前业界公认的最优雅方案。