根据 realized? 的文档,我同意如果在执行中延迟,则返回 false 是正确的行为。但这确实有一些时候,我会在并发环境中使用延迟和 realized? 来确定“延迟是否已被强制?”以决定我是否要在原子操作中替换延迟或等待已启动的流程完成。我可以使用 deref 来这样做,除了我不希望在它未启动的情况下启动流程。
如果我的理解正确,在1.11之后,我不能再使用 realized? 来检测这种案例。是否有支持的方式来回答“延迟是否已被强制?”或者我现在需要创建自己的结构?
一个成为真正的 isForced() / forced? 断言的二进制实例,一旦进入 deref 中的同步块(但在 thunk 开始/完成之前)成为真正的/可看到的,这是一个可能的解决方案,用以解答我所询问的。