go語言
Go的語法接近C語言,但對于變量的聲明有所不同。Go支持垃圾回收功能。Go的并行模型是以東尼·霍爾的通信順序進程(CSP)為基礎,采取類似模型的其他語言包括Occam和Limbo,但它也具有Pi運算的特征,比如通道傳輸。在1.8版本中開放插件(Plugin)的支持,這意味著現在能從Go中動態加載部分函數。
死鎖
死鎖是指兩個或兩個以上的協程的執行過程中,由于競爭資源或由于彼此通信而造成的一種阻塞的現象,若無外力作用,他們將無法推進下去。
常見的死鎖
場景1:一個通道在一個go程讀寫
func main() { c:=make(chan int) c<-88 <-c }
場景二:go程開啟之前使用通道
func main() { c:=make(chan int) c<-88 go func() { <-c }() }
場景三:通道1中調用了通道2,通道2中調用通道1
func main() { c1,c2:=make(chan int),make(chan int) go func() { for { select{ case <-c1: c2<-10 } } }() for { select{ case <-c2: c1<-10 } } }
死鎖的出現的情況很多,但都不外乎是爭搶資源和數據通信引起。
解決死鎖的方法是加鎖。
以上就是golang 如何處理死鎖的詳細內容,更多請關注億速云其它相關文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。