go入門(七)2018-07-19

go并發(fā)

goroutine

Go運(yùn)行環(huán)境管理的輕量級線程
go xxx 啟動新的goroutine

channel

有類型的管道,使用-> 和 <-來表示發(fā)送和接收,箭頭代表數(shù)據(jù)流的方向

創(chuàng)建

與slice/map一樣使用make創(chuàng)建
ch := make(chan int)
默認(rèn)情況下,在另一端準(zhǔn)備好之前,發(fā)送和接收都會阻塞,這使得goroutine可以在沒有明確鎖的情況下保持同步

緩沖

channel可以帶緩沖,發(fā)送方只有在緩沖區(qū)滿的時候才會阻塞;接收方在緩沖區(qū)清空時接收阻塞

range和close

發(fā)送方在發(fā)送完成之后可以在close對應(yīng)的channel; channel與文件不同,通常情況下不需要關(guān)閉,只有在發(fā)送方?jīng)]有更多數(shù)據(jù)的時候才需要關(guān)閉,例如中斷一個range

select

使得一個goroutine在多個通信操作上等待;
select會阻塞,直到某個條件分支可以執(zhí)行

sync.Mutex

互斥操作

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容