第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

golang中通道緩沖容量為0和1的區(qū)別

golang中通道緩沖容量為0和1的區(qū)別

Go
DIEA 2023-05-08 16:31:11
我已將通道緩沖區(qū)大小設(shè)置為零,例如var intChannelZero = make(chan int),當(dāng)從中獲取值時(shí)intChannelZero將被阻塞,直到intChannelZero具有值。此外,我將通道緩沖區(qū)大小設(shè)置為 1,例如var intChannelOne = make(chan int, 1),當(dāng)從 獲取值時(shí)intChannelOne將被阻塞,直到intChannelOne具有值。我們知道的容量intChannelZero是零,容量intChannelOne是一,所以我想知道:intChannelZero給like賦值時(shí)intChannelZero <- 1,值保存在哪里?為它們賦值時(shí)intChannelZero以及賦值時(shí)的差異。intChannelOne誰(shuí)能在Golang Runtime Enviroment 層面解釋一下?多謝。
查看完整描述

2 回答

?
心有法竹

TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個(gè)贊

如果通道是無(wú)緩沖的(容量為零),則只有當(dāng)發(fā)送方和接收方都準(zhǔn)備就緒時(shí),通信才會(huì)成功。

如果通道已緩沖(容量 >= 1),則如果通道未滿則發(fā)送成功且不會(huì)阻塞,如果緩沖區(qū)不為空則接收成功且不會(huì)阻塞。

當(dāng)像 intChannelZero <- 1 那樣將值賦給 intChannelZero 時(shí),該值保存在哪里?

該值從發(fā)送方復(fù)制到接收方。除了實(shí)現(xiàn)可能使用的任何臨時(shí)變量外,該值不會(huì)保存在任何地方。

intChannelZero 和 intChannelOne 賦值時(shí)的區(qū)別。

在 intChannelZero 塊上發(fā)送,直到接收器準(zhǔn)備就緒。

發(fā)送 intChannelOne 塊,直到緩沖區(qū)中有可用空間。


查看完整回答
反對(duì) 回復(fù) 2023-05-08
?
拉丁的傳說(shuō)

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超8個(gè)贊

無(wú)緩沖和緩沖通道的區(qū)別在于,

  1. 發(fā)送到頻道被阻止

  2. 從通道接收被阻止

對(duì)于無(wú)緩沖通道

如果頻道已經(jīng)發(fā)送消息但尚未收到,則發(fā)送將被阻止。

如果從未發(fā)生過發(fā)送,則接收將被阻止。

對(duì)于緩沖通道

如果已經(jīng)發(fā)生 n(channel size) 次發(fā)送并且沒有收到任何發(fā)送,則發(fā)送將被阻止。即整個(gè)通道大小已被發(fā)送的消息使用,但沒有收到任何消息。

如果緩沖區(qū)為空,即沒有任何未使用的發(fā)送,則接收將被阻止

運(yùn)行時(shí)錯(cuò)誤

接收阻塞將拋出波紋管錯(cuò)誤

fatal error: all goroutines are asleep - deadlock!

goroutine 1 [chan receive]:

發(fā)送被阻止將拋出波紋管錯(cuò)誤

fatal error: all goroutines are asleep - deadlock!

goroutine 1 [chan send]:


查看完整回答
反對(duì) 回復(fù) 2023-05-08
  • 2 回答
  • 0 關(guān)注
  • 267 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)