根据realized?的docstring,我同意在延迟当前正在进行的条件下返回false是正确的行为。尽管如此,确实有在这种情况下,我会在并发上下文中使用延迟和realized?来知道“延迟是否已被强制执行?”,以决定是否要在原子中替换延迟(或等待正在执行的过程完成)。我可以使用deref来实现这一点,除了我不想在没有已开始执行的情况下启动该过程。
如果我对1.11的正确理解不再可以使用realized?来检测这种情况。有没有一种官方的方式来回答“延迟是否已被强制执行?”或者我现在需要创建自己的构造函数?
一个成为true的isForced() / forced?谓词,在一个线程进入deref中的同步块后(但在thunk开始/完成后)对其他线程可见,这可能是解决我所提问题的其中一个方案。