一种延迟执行的模式

问题描述

我想我已经发现了一种模式,但是我不知道它的名字。我非常怀疑我是在这里真正发明的。

使用伪代码

queue(closure) = {
  if (closure.isRunning)
    suspend
    return deferred
  else
    result = closure.run()
    deferred.notify(result)
    return result
}

// usage:
result = queue { slow_computation() }
@H_502_7@

queue的作用是:

  1. 检查是否已在运行slow_computation()
  2. 如果存在,它将暂停/阻塞线程,并等待上一个结果。
  3. 如果没有,它将运行slow_computation()通知暂停/阻塞的线程有关结果。

与普通结果缓存不同,“缓存”会尽快丢弃。与普通操作队列不同,慢速计算的结果被重用。存在争用时,它将重用结果,否则不会重复。

问题是,您可以命名此模式吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)