首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@同步或同步关键字在Kotlin上工作吗?

@同步或同步关键字在Kotlin上工作吗?
EN

Stack Overflow用户
提问于 2022-10-16 21:56:14
回答 1查看 66关注 0票数 1

从其他一些StackOverflow答案中,如果需要保护属性或函数不受并发协同执行的影响,则似乎需要互斥。但是,我今天碰巧看到了StateFlow.kt的源代码,并注意到:

该属性是线程安全的,可以在没有外部同步的情况下从并发协同中安全地更新。

进一步看一下实现,它所拥有的只是没有互斥的区块

所以问题是,@同步或同步关键字在Kotlin协同中工作吗?论坛的讨论大多表明他们没有,但官方的StateFlow实施表明并非如此。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-16 22:25:39

它们可以工作,但是应该首选Mutex,因为它们可以挂起,从而避免了像synchronized那样阻塞线程。

要使一些真正的线程安全,例如StateFlow的value属性(可以从协同线内部或外部的任何线程设置),需要传统的同步。

如果一个函数或属性仅从协同器中访问,那么它就不需要传统的同步。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74090943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档