Kotlin Coroutines:我们需要同步共享状态吗?

4 kotlin

从官方指南和来自Web的示例中,我没有看到任何锁定同步的提及,或者在多个launchasync调用中修改共享变量的安全性.

s1m*_*nw1 6

协同程序带来并发编程模型,可能导致同时执行的代码.正如您从基于线程的库中了解到的那样,您必须关注文档中提到的同步:

可以使用Dispatchers.Default等多线程调度程序同时执行协同程序.它提出了所有常见的并发问题.主要问题是同步访问共享可变状态.在协程域中解决这个问题的一些解决方案类似于多线程世界中的解决方案,但其他解决方案是独一无二的.

使用Kotlin 协同程序,您可以使用熟悉的策略,例如使用线程安全的数据结构,执行限制在单个线程或使用(例如Mutex).

除了常见的模式,Kotlin协同程序鼓励我们使用" 通信共享 "的方式.具体地说,可以在协同程序之间共享"actor".它们可以由协同程序使用,协程程序可以向/从它发送/接收消息.还要看看频道.