func main()
close(ch)
for
fmt.println(b)
}}
func
main()
close
(ch)
for v :=
range ch
}
如上面的例子,如果不close(ch),會報deadlock錯誤,
為什麼會死鎖?非緩衝通道上如果發生了流入無流出,或者流出無流入,也就導致了死鎖。或者這樣理解 go啟動的所有goroutine裡的非緩衝通道一定要乙個線裡存資料,乙個線裡取資料,要成對才行
range不等到通道關閉是不會結束讀取的。也就是如果 緩衝通道乾涸了,那麼range就會阻塞當前goroutine, 所以死鎖咯。
func
test()
}()var m map
[string
]int
m["stu"]=
100}
func
calc()
}func
main()
time.
sleep
(time.second *
10000
)}
oracle關閉問題
今天在連線資料庫的時候 出現這條錯誤 ora 01090 shutdown in progress connection is not permitted 提示資料庫已經關閉了,然後我用startup啟動,報了以下錯誤 ora 01081 cannot start already running o...
DataReader關閉的問題
sqlcommand在每次執行executenonquery 方法之後,內部會生成乙個空的datareader物件,該物件只有在資料庫連線關閉之後,才會被釋放掉,加上上邊提到的,在dbhelper類中資料庫連線物件是乙個靜態的全域性變數。因為在同時呼叫api進行資料查詢時,在第乙個查詢還未結束,資料...
Kettle Carte集群關閉問題
kettle carte命令列是沒有關閉的服務的命令的。一般,情況下,直接kill掉pid就是了。但是kettle開啟的程序好多個,如果乙個個kill,一方面比較麻煩,另外可能kill掉乙個pid之後,一看,又自動開啟了。命令列下,是可以通過以下命令直接kill掉所有kettle的程序的 ps au...