根据realized?的文档字符串,我同意如果延迟正在执行,返回false是正确的行为。然而,确实有在并发环境中使用延迟和realized?知道"延迟是否已经被强制执行?"的情况,以决定是否要替换延迟(在原子中)或等待正在执行的过程完成。我可以使用deref来做到这一点,除了我不想启动尚未开始执行的过程。
如果我的理解正确,在1.11之后,我将不能再使用realized?来检测这种情况。是否将有一种支持的方式来回答"延迟是否已经被强制执行?",还是我现在需要创建自己的结构?
在deref中同步块被进入时(但在thunk开始/完成之前),将变为true/对所有线程可见的第二个isForced() / forced?谓词将是解决我提出的问题的一个可能解决方案。