根据realized?的文档说明,我同意如果延迟目前正在执行,返回false是正确的行为。然而,确实有些时候我会使用延迟和realized?在并发环境中,要知道“延迟是否已经被强制执行?”以决定我是否要在原子中替换延迟,还是等待已经正在执行的过程完成。我本来可以用deref做这个,但是我不想让程序在没有正在执行的情况下就开始过程。
如果我对1.11之后的情况理解正确,我不能再使用realized?来检测这种情况。是否有支持回答“延迟是否已经被强制执行?”的方法,或者现在我需要创建自己的结构呢?
一个可能的解决方案是在deref同步块进入时(但在thunk开始之前),真正强制/强制?正确变成对所有线程true/可见的第二个正确/强制?断言。