Clojure中的Golang Ctx WIthTimeOut

时间:2020-06-14 04:01:04

标签: go clojure

在Clojure并发中,如果执行任务需要很长时间,我希望生成的线程杀死自己,这类似于Golang ctx withtimeout提供的功能。我该怎么办?

请记住,我对Java线程一无所知。

2 个答案:

答案 0 :(得分:2)

您不能干净地杀死Java线程,因此人们通常编写运行时间很长的线程来偶尔检查标志,并仅在适当的情况下继续工作。

另一方面,线程的客户端可以停止等待答案。如果从future开始线程,则可以在https://clojure.github.io/clojure/clojure.core-api.html#clojure.core/derefderef上使用超时参数,或通过future-done?对其进行检查。

当发生大量异步事情时,Clojure的core.async库中更好的Go-like代数可以作为原始Java线程的替代品(https://clojure.github.io/core.async/)很有帮助。

答案 1 :(得分:0)

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