Go語言中channel的基礎知識-創(chuàng)新互聯(lián)

channel

goroutine運行在相同的地址空間,因此訪問共享內(nèi)存必須做好同步。goroutine 奉行通過通信來共享內(nèi)存,而不是共享內(nèi)存來通信。

創(chuàng)新互聯(lián)主要從事成都網(wǎng)站設計、網(wǎng)站建設、網(wǎng)頁設計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務。立足成都服務煙臺,10余年網(wǎng)站建設經(jīng)驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:13518219792

引?類型 channel 是 CSP 模式的具體實現(xiàn),用于多個 goroutine 通訊。其內(nèi)部實現(xiàn)了同步,確保并發(fā)安全。

 channel類型

和map類似,channel也一個對應make創(chuàng)建的底層數(shù)據(jù)結(jié)構的引用。

當我們復制一個channel或用于函數(shù)參數(shù)傳遞時,我們只是拷貝了一個channel引用,因此調(diào)用者何被調(diào)用者將引用同一個channel對象。和其它的引用類型一樣,channel的零值也是nil。

定義一個channel時,也需要定義發(fā)送到channel的值的類型。channel可以使用內(nèi)置的make()函數(shù)來創(chuàng)建:

    make(chan Type) //等價于make(chan Type, 0)

    make(chan Type, capacity)

當 capacity= 0 時,channel 是無緩沖阻塞讀寫的,當capacity> 0 時,channel 有緩沖、是非阻塞的,直到寫滿 capacity個元素才阻塞寫入。

channel通過操作符<-來接收和發(fā)送數(shù)據(jù),發(fā)送和接收數(shù)據(jù)語法:

    channel <- value      //發(fā)送value到channel

    <-channel            //接收并將其丟棄

    x := <-channel       //從channel中接收數(shù)據(jù),并賦值給x

    x, ok := <-channel    //功能同上,同時檢查通道是否已關閉或者是否為空

默認情況下,channel接收和發(fā)送數(shù)據(jù)都是阻塞的,除非另一端已經(jīng)準備好,這樣就使得goroutine同步變的更加的簡單,而不需要顯式的lock。

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

網(wǎng)站欄目:Go語言中channel的基礎知識-創(chuàng)新互聯(lián)
URL地址:http://muchs.cn/article26/pcdjg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供響應式網(wǎng)站、用戶體驗、虛擬主機網(wǎng)頁設計公司、營銷型網(wǎng)站建設、關鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站