根据realized?的文档字符串,我同意如果延迟目前正在执行,则返回false是正确的行为。然而,确实有我使用延迟和realized?在并发上下文中以确定“延迟是否被强制”的时候,以便决定是否要在原子操作中替换延迟(或等待正在执行的过程完成)。我能用deref来做这件事,但是我不希望在没有正在执行的情况下启动进程。
如果我对1.11之后的理解正确的话,我将无法再使用realized?来检测这种情况。有没有一种支持的方式来回答“延迟已经被强制了吗?”或者我现在需要创建自己的结构吗?
A第二个isForced() / forced?谓词,在deref中的同步块进入时(但在thunk开始/完成后可见)变为true,这是一个可能的解决方案之一,以回答我提出的问题。