gpt4 book ai didi

algorithm - 命名该技术(它可能被称为 'piggybacking' )

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:28:15 26 4
gpt4 key购买 nike

以下方法/技术的名称是什么(我会尽力描述,可能需要了解“记忆化”的背景知识才能理解为什么这种技术非常有用) :

您开始了一些可能很长的异步计算并且您意识到相同的计算已经开始但还没有完成并且您在第一个计算上“搭载”。然后,当第一次计算结束时,它发出的不是一个而是两个回调。

目标是避免不必要地启动第二个计算,因为您知道已经有一个相同的计算在运行。

请注意,尽管并非完全不同,但我并不是在寻找“记忆化”缓存的特殊情况:记忆化是指当您开始计算并找到同一计算的缓存(记忆化)结果时 已经完成,您可以重复使用。

在这里,我正在寻找在某种程度上类似于内存的技术的名称(因为它可能有用,原因与内存是一种有用的技术相同),除了它重用第一次计算的结果即使在您发出第二次计算时第一次计算尚未完成

我一直称这种技术为“搭载”,但我不知道这是否正确。

我实际上不止一次将它用作某种“类固醇内存”,它非常方便。

我只是不知道这种(高级?)技术的名称是什么。

编辑

该死,我想评论 epatel 的答案,但它消失了。 epatel 的回答给了我一个想法,这种技术可以称为“惰性内存” :)

最佳答案

这只是 future 的内存

正常的“急切”内存是这样工作的:

f_memo(x):
critical_section:
if (exists answers(f,x))
return answers(f,x)
else
a = f(x)
answers(f,x) = a
return a

现在如果 f(x) 返回 future 而不是实际结果,上面的代码按原样工作。你得到了搭载效应,即像这样:

  1. 第一个线程调用 f(3)
  2. 没有存储 f(3) 的答案,因此在临界区调用了 f(3)。 f(3) 被实现为返回未​​来,因此“答案”立即准备就绪;上面代码中的 'a' 设置为 future 的 F, future 的 F 存储在答案表中
  3. future 的 F 作为调用 f(3) 的“结果”返回,调用可能仍在进行
  4. 另一个线程调用 f(3)
  5. 从表中找到 future 的F,并立即返回
  6. 现在两个线程都处理了计算结果;当他们试图读取它时,他们会阻塞直到计算准备就绪——在帖子中提到这种通信机制是由回调实现的,大概是在 futures 不太常见的情况下

关于algorithm - 命名该技术(它可能被称为 'piggybacking' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2383485/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com