Golang Ctx WIthTimeOut in Clojure



在 clojure 并发中,我希望我生成的线程在完成任务需要很长时间时自行杀死,类似于没有超时的 Golang ctx 提供的内容。 我应该怎么做?

请注意,我对java线程一无所知。

你不能干净地杀死一个Java线程,所以人们通常会编写运行非常长的线程来偶尔检查一个标志,并且只在适当的时候继续工作。

另一方面,线程的客户端可以停止等待答案。 如果使用future启动线程,则可以在deref上 https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/deref 上使用 timeout 参数,或使用future-done?进行检查。

当你有很多异步的东西发生时,Clojure 的 core.async 库中更好的类似 Go 的代数可以作为原始 Java 线程的替代品(https://clojure.github.io/core.async/(。

没关系,显然有一种叫做未来和承诺的东西。

最新更新