Go 有没有更好的方法来阻止围棋中的无限戈罗廷?
我使用goroutines制作了一个简单的时钟信号:Go 有没有更好的方法来阻止围棋中的无限戈罗廷?,go,goroutine,Go,Goroutine,我使用goroutines制作了一个简单的时钟信号: func clockloop(ch chan byte) { count := 0 for { time.Sleep(FRAMELEN) count++ innerfor: for count { select { case ch <- 1: count--
func clockloop(ch chan byte) {
count := 0
for {
time.Sleep(FRAMELEN)
count++
innerfor:
for count {
select {
case ch <- 1:
count--
default:
break innerfor
}
}
}
}
func MakeClock() chan byte {
clock := make(chan byte)
go clockloop(clock)
return clock
}
func时钟循环(ch chan字节){
计数:=0
为了{
时间。睡眠(FRAMELEN)
计数++
innerfor:
算数{
挑选{
case ch一个停止通道是一个很好的方法。一个goroutine必须停止自己。没有办法从外部杀死一个goroutine
作为参考,Ian说了这一点,Russ补充道,“杀死单独的Goroutine是一件非常不稳定的事情:
不可能知道这些锁或其他资源是什么
goroutines有一个仍然需要清理的地方
程序继续平稳运行。”另请参见