从官方指南和网站上的示例中,我没有看到任何提及锁定或同步,或者多次安全修改共享变量{{ 1}}或launch
来电。
答案 0 :(得分:6)
协同程序带来并发编程模型,可能导致同时执行的代码。正如您从基于线程的库中了解到的那样,您必须关注文档中所述的同步:
可以使用Dispatchers.Default等多线程调度程序同时执行协同程序。它提出了所有常见的并发问题。主要问题是同步访问共享可变状态。在协同程序领域中解决这个问题的一些解决方案类似于多线程世界中的解决方案,但其他解决方案是独一无二的。
使用Kotlin Coroutines ,您可以使用熟悉的策略,例如将线程安全数据结构,限制执行到单个线程或使用 lock (例如Mutex)。
除了常见的模式,Kotlin协同程序鼓励我们通过沟通"" 分享。样式。具体地说,一个演员"协同程序之间可以共享。它们可以由协同程序使用,协程程序可以向/从它发送/接收消息。另请查看Channels。