gpt4 book ai didi

kotlin - 互斥的正确方式

转载 作者:行者123 更新时间:2023-12-02 13:23:20 26 4
gpt4 key购买 nike

使用 Mutex 改变共享状态的“同步”功能的正确方法是什么?在协程中使用 Mutex 以 launch() 开头或 async()按预期工作,但如果我用 runBlocking() 启动协程线程看起来像被阻塞(锁定)了很长时间。问题是该函数可能是从多个线程调用的,而我无法通过线程限制来解决这个问题。在这种情况下使用 Mutex 的正确方法是什么?

最佳答案

正确的方法是设计您的软件,以避免使用 Mutex以及其他形式的共享可变状态。如果你有一些资源或数据结构需要共享,你总是可以将这个数据结构封装在一个单独的协程中,并在你需要对这个数据结构做任何事情时与这个协程通信。这种设计模式被称为 Actor 。 Actor 是一对协程和它读取传入消息的 channel 。

这种方法的优点是您可以与参与者进行异步通信。如果您向参与者发送消息并且不等待响应,那么您可以继续工作而无需等待参与者完成处理您的消息。

您可以在 the guide to kotlinx.coroutines 中阅读更多关于 Actor 的信息。 .

关于kotlin - 互斥的正确方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49985933/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com