gpt4 book ai didi

multithreading - 在(clojure 的内部)线程池中执行任务的惯用方式?

转载 作者:行者123 更新时间:2023-12-01 11:33:36 24 4
gpt4 key购买 nike

我有一些任务需要在后台执行。它们不会产生有趣的值(value),它们的副作用是它们存在的理由。稍后将在其他地方观察到这些影响。

我在 clojure 中找不到任何函数/宏,它只接受一个函数并在后台线程中执行它。 future 可能是一场比赛,但我有点不确定,因为我永远不会取消引用它。这本身不是问题,但我有点担心如果 future 对象被垃圾收集并且 future 尚未开始执行, future 是否有可能被取消?

我正在做这样的事情:

(doseq [task-fn task-fns]
(future (task-fn))

最佳答案

使用future 来分离线程以产生副作用并没有错。是否要取消引用结果并不重要。不, future 线程不会因垃圾收集而被取消。

正如另一位用户提到的,您完全可以直接使用 Java 的线程执行机制。您选择哪种实际上只是风格问题。我个人倾向于使用future

如果你恰好在使用 core.async,那么使用 threadgo 被认为是更合适的(因为我认为 结合实际和风格原因,因为它返回一个 channel )。但我猜这不是你的情况。

关于multithreading - 在(clojure 的内部)线程池中执行任务的惯用方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29847297/

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