在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    《Go題庫·8》channel實(shí)現(xiàn)方式/原理/概念/底層實(shí)現(xiàn)

    面試企業(yè) 好未來、米哈游、跟誰學(xué),字節(jié)跳動(dòng)、美團(tuán)、網(wǎng)易、新浪、滴滴、小米

    題目解析 GOLANG ROADMA社區(qū)

    答案(知北游)+

    背景:

    • Go語言提供了一種不同的并發(fā)模型–通信順序進(jìn)程(communicating sequential processes,CSP)。
    • 設(shè)計(jì)模式:通過通信的方式共享內(nèi)存
    • channel收發(fā)操作遵循先進(jìn)先出(FIFO)的設(shè)計(jì)

    底層結(jié)構(gòu):

    type hchan struct { qcount uint // channel中的元素個(gè)數(shù) dataqsiz uint // channel中循環(huán)隊(duì)列的長度 buf unsafe.Pointer // channel緩沖區(qū)數(shù)據(jù)指針 elemsize uint16 // buffer中每個(gè)元素的大小 closed uint32 // channel是否已經(jīng)關(guān)閉,0未關(guān)閉 elemtype *_type // channel中的元素的類型 sendx uint // channel發(fā)送操作處理到的位置 recvx uint // channel接收操作處理到的位置 recvq waitq // 等待接收的sudog(sudog為封裝了goroutine和數(shù)據(jù)的結(jié)構(gòu))隊(duì)列由于緩沖區(qū)空間不足而阻塞的Goroutine列表 sendq waitq // 等待發(fā)送的sudogo隊(duì)列,由于緩沖區(qū)空間不足而阻塞的Goroutine列表 lock mutex // 一個(gè)輕量級(jí)鎖}

    channel創(chuàng)建:

    ch := make(chan int, 3)

    • 創(chuàng)建channel實(shí)際上就是在內(nèi)存中實(shí)例化了一個(gè)hchan結(jié)構(gòu)體,并返回一個(gè)chan指針
    • channle在函數(shù)間傳遞都是使用的這個(gè)指針,這就是為什么函數(shù)傳遞中無需使用channel的指針,而是直接用channel就行了,因?yàn)閏hannel本身就是一個(gè)指針

    channel發(fā)送數(shù)據(jù):

    ch <- 1ch <- 2

    • 檢查 recvq 是否為空,如果不為空,則從 recvq 頭部取一個(gè) goroutine,將數(shù)據(jù)發(fā)送過去,并喚醒對(duì)應(yīng)的 goroutine 即可。
    • 如果 recvq 為空,則將數(shù)據(jù)放入到 buffer 中。
    • 如果 buffer 已滿,則將要發(fā)送的數(shù)據(jù)和當(dāng)前 goroutine 打包成 sudog 對(duì)象放入到 sendq中。并將當(dāng)前 goroutine 置為 waiting 狀態(tài)。

    channel接收數(shù)據(jù):

    <-ch<-ch

    • 檢查sendq是否為空,如果不為空,且沒有緩沖區(qū),則從sendq頭部取一個(gè)goroutine,將數(shù)據(jù)讀取出來,并喚醒對(duì)應(yīng)的goroutine,結(jié)束讀取過程
    • 如果sendq不為空,且有緩沖區(qū),則說明緩沖區(qū)已滿,則從緩沖區(qū)中首部讀出數(shù)據(jù),把sendq頭部的goroutine數(shù)據(jù)寫入緩沖區(qū)尾部,并將goroutine喚醒,結(jié)束讀取過程。
    • 如果sendq為空,緩沖區(qū)有數(shù)據(jù),則直接從緩沖區(qū)讀取數(shù)據(jù),結(jié)束讀取過程。
    • 如果sendq為空,且緩沖區(qū)沒數(shù)據(jù),則只能將當(dāng)前的goroutine加入到recvq,并進(jìn)入waiting狀態(tài),等待被寫goroutine喚醒。

    channel規(guī)則:

    操作

    空channel

    已關(guān)閉channel

    活躍中的channel

    close(ch)

    panic

    panic

    成功關(guān)閉

    ch<- v

    永遠(yuǎn)阻塞

    panic

    成功發(fā)送或阻塞

    v,ok = <-ch

    永遠(yuǎn)阻塞

    不阻塞

    成功接收或阻塞

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場,版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系管理員(admin#wlmqw.com)刪除。
    用戶投稿
    上一篇 2022年6月23日 06:33
    下一篇 2022年6月23日 06:34

    相關(guān)推薦

    • 2022世界杯比賽什么時(shí)候結(jié)束總共幾天(2022世界杯比賽對(duì)陣圖)

      2022年卡塔爾世界杯吸引無數(shù)用戶關(guān)注,大家每天也都第一時(shí)間觀看世界杯的比賽情況。那么,2022世界杯比賽什么時(shí)候結(jié)束?本屆世界杯比賽總共幾天時(shí)間呢?很多網(wǎng)友對(duì)于2022年世界杯時(shí)…

      2022年11月25日
    • 什么是推廣cpa一篇文章帶你看懂CPA推廣渠道

      CPA渠道 CPA指的是按照指定的行為結(jié)算,可以是搜索,可以是注冊(cè),可以是激活,可以是搜索下載激活,可以是綁卡,實(shí)名認(rèn)證,可以是付費(fèi),可以是瀏覽等等。甲乙雙方可以根據(jù)自己的情況來定…

      2022年11月25日
    • 抖音直播帶貨有哪些方法技巧(抖音直播帶貨有哪些痛點(diǎn))

      如今抖音這個(gè)短視頻的變現(xiàn)能力越來越突顯了,尤其是在平臺(tái)上開通直播,更具有超強(qiáng)的帶貨屬性,已經(jīng)有越來越多的普通人加入到其中了。不過直播帶貨雖然很火,但是也不是每個(gè)人都能做好的,那么在…

      2022年11月24日
    • 《原神》3.2無相交響詩第一天無相之冰怎么打?無相交響詩攻略

      原神3.2無相交響詩第一天無相之冰怎么打?最近新版本3.2版本的無相交響詩活動(dòng)又開啟了,不少玩家還不清楚具體的玩法,下面一起來看一下原神被隱去的原神3.2無相交響詩第一天無相之冰打…

      2022年11月24日
    • 淘寶直播平臺(tái)抽成多少(淘寶直播平臺(tái)抽成比例)

      隨著時(shí)代的發(fā)展,現(xiàn)在直播帶貨已經(jīng)成為主要帶貨方式,其中淘寶是主流帶貨平臺(tái),不少人在上面直播帶貨賺錢,一些小伙伴也想加入,那么淘寶直播平臺(tái)抽成多少?下面小編為大家?guī)硖詫氈辈テ脚_(tái)抽成…

      2022年11月24日
    • 淘寶直播開通后帶貨鏈接怎么做(淘寶直播需要開通淘寶店鋪嗎)

      直播帶貨無論是對(duì)于商家來說還是主播收益都是非??捎^的,所以不少平臺(tái)都有直播帶貨功能,一些小伙伴也想加入淘寶直播,那么淘寶直播開通后帶貨鏈接怎么做?下面小編為大家?guī)硖詫氈辈ラ_通后帶…

      2022年11月24日
    • 園屬于什么結(jié)構(gòu)(園的結(jié)構(gòu)和部首)

      園 yuán:全包圍結(jié)構(gòu),平穩(wěn)端正中稍帶左收右展。 外部“口” 體態(tài)端莊,稍抗肩,稍帶左輕右重。左豎起筆稍抖,豎身勿重,稍左斜,垂露收筆;第二筆橫折壓著左豎起筆,橫畫稍抗肩,不要重…

      2022年11月24日
    • 白襯衫搭配什么褲子好看,女生襯衫穿法圖片

      說起白襯衫和長褲的搭配組合,不知道大家有沒有發(fā)現(xiàn),雖然是很常見的造型,可不同年齡段慣用的穿搭方式卻不相同,從而也穿出了不同的味道。簡直是現(xiàn)在這個(gè)季節(jié),時(shí)髦精們的必備造型之一~ 70…

      2022年11月24日
    • 明查|美國新冠后遺癥患者中有16%癥狀嚴(yán)重以致無法工作?

      點(diǎn)擊進(jìn)入澎湃新聞全球事實(shí)核查平臺(tái) 速覽 – 網(wǎng)傳數(shù)據(jù)比例無權(quán)威信源佐證,該比例有可能是結(jié)合了美國疾病防控中心和布魯金斯學(xué)會(huì)的數(shù)據(jù)得出,但這兩個(gè)機(jī)構(gòu)的調(diào)研目的和樣本都不同…

      2022年11月24日
    • 《原神》畫外旅照青植之篇第七天怎么過?畫外旅照第七天玩法介紹

      原神的畫外旅照任務(wù)需要玩家達(dá)成一定的要求進(jìn)行拍照,完成任務(wù)可以獲得獎(jiǎng)勵(lì)。很多玩家想知道原神畫外旅照青植之篇第七天怎么過,下面就帶來原神畫外旅照第七天玩法介紹,感興趣的小伙伴不要錯(cuò)過…

      2022年11月23日

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息