根据realized?的文档注释,我同意如果延迟正在进行中,返回false是正确的行为。换句话说,确实有情况我用延迟和realized?在并发环境中使用,以“延迟是否已执行?”来决定我是替换延迟(在原子操作中)还是等待已经进行中的流程完成。我可以用于解引用,但我不想在没有已进行中的流程时就启动该过程。
如果我对1.11之后的理解正确,我将无法再使用realized?来检测这种情况。是否有支持“延迟是否已执行?”的方案,或者我现在需要创建自己的构造器?
一个对所有的线程都可见的forced() / forced?谓词,一旦在deref块中进入同步块(但在thunk开始或完成之前)将是实现我要求的可能解决方案之一。