gpt4 book ai didi

clojurescript - 不关闭浏览器 channel 的后果?

转载 作者:行者123 更新时间:2023-12-04 05:41:01 25 4
gpt4 key购买 nike

我在客户端使用 Om,在应用程序的整个生命周期中,许多组件都被挂载/卸载。安装后,会打开各种 channel (在 go 块中)。我也打算使用 IWillUnmount 来关闭它们。但首先,我的问题是:未关闭的 channel 会发生什么?他们使用的资源是否得到释放?从长远来看,不关闭 channel (卸载组件时)会降低浏览器的性能?谢谢。

最佳答案

根据对实现的粗略阅读,未关闭的 channel 不应该使用资源,如果它们有资格被垃圾收集。这意味着发送方和接收方都不能保留对它们的引用(或者也必须符合收集条件)。

关闭 channel 所做的只是清空其缓冲区,并将其标记为已关闭,以便无法向缓冲区添加任何内容。如果它的缓冲区中没有任何消息,则开放 channel 将使用与关闭 channel 相同的资源。

https://github.com/clojure/core.async/blob/master/src/main/clojure/cljs/core/async/impl/channels.cljs#L110

关于clojurescript - 不关闭浏览器 channel 的后果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24696743/

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