Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure 如何处理无限go循环_Clojure_Future_Core.async - Fatal编程技术网

Clojure 如何处理无限go循环

Clojure 如何处理无限go循环,clojure,future,core.async,Clojure,Future,Core.async,作为一个爱好项目,我正在基于。原作者在幕后使用频道/事件,这就是我使用的原因。用伪语法表示的未来如下所示: func未来(func f()(T,bool))未来{ ch=新频道() 繁殖(func(){ x:=f() 对于{syncEvt(sndEvt(ch,x))} }) 返回rcvEvt(ch) } 使用有效的Go语法、类型定义和get函数: 类型Comp struct{ 值接口{} 好的,布尔 } 类型未来成龙公司 func future(f func()(接口{},bool))futu

作为一个爱好项目,我正在基于。原作者在幕后使用频道/事件,这就是我使用的原因。用伪语法表示的未来如下所示:

func未来(func f()(T,bool))未来{
ch=新频道()
繁殖(func(){
x:=f()
对于{syncEvt(sndEvt(ch,x))}
})
返回rcvEvt(ch)
}
使用有效的Go语法、类型定义和
get
函数:

类型Comp struct{
值接口{}
好的,布尔
}
类型未来成龙公司
func future(f func()(接口{},bool))future{
未来:=制造(成龙公司)
go func(){
v、 o:=f()
c:=Comp{v,o}
为了{
将来

由于我对Clojure(和core.async)非常陌生,我担心无限的
go循环
。IOC线程会被释放吗?我是否应该提供某种毒药来停止循环(尽管我认为这很容易出错)?有什么建议吗?

Go
Clojure中的块与Go中的块不同。在core.async Go块作为附加到通道上的回调存在,因此它们的寿命与通道本身的寿命一样长。因此,将
Go
块视为回调上的语法糖分,这一切都是有意义的


本视频教程将更详细地介绍:

Go
Clojure中的块与Go中的块不同。在core.async中,Go块作为附加到通道上的回调存在,因此它们的寿命与通道本身的寿命一样长。因此,将
Go
块视为回调上的语法糖,它将成为所有的明星理智


本视频教程将更详细地介绍:

是的,
recur
通常是通过使用或其变体之一来实现的。我知道,但是本文中的实现使用了无限循环来确保未来(这是一个通道)一旦
comp
可用,它总是可以使用的。因此,我想知道如何在Clojure中处理这个问题。是的,通常
recurr
是使用条件或它的一个变体。我知道,但是本文的实现使用无限循环来确保未来(这是一个通道)只要
comp
可用,就可以随时使用。因此,我想知道如何在Clojure中处理此问题。