Go語(yǔ)言中關(guān)閉帶緩沖區(qū)的頻道實(shí)例分析
本文實(shí)例分析了Go語(yǔ)言中關(guān)閉帶緩沖區(qū)的頻道。分享給大家供大家參考。具體分析如下:
Go語(yǔ)言提供了兩種頻道,帶緩沖區(qū)和不帶緩沖區(qū)的。不帶緩沖區(qū)的頻道,發(fā)送和接收是同步的,必須接收端接收了消息,發(fā)送端才能從發(fā)送調(diào)用中解脫。帶緩沖區(qū)的頻道,在緩沖區(qū)滿(mǎn)之前,發(fā)送和接收是異步的,發(fā)送端的發(fā)送操作只保證把消息放入緩沖區(qū)。
Go的頻道是可以關(guān)閉的,關(guān)閉頻道的目的是讓接收端知道不會(huì)再有消息從這個(gè)頻道進(jìn)入,我們可能會(huì)用某個(gè)頻道的關(guān)閉來(lái)表示某種狀態(tài)的終結(jié)。
當(dāng)我們關(guān)閉一個(gè)帶緩沖區(qū)的頻道時(shí),如果緩沖區(qū)中還有消息,接收端是會(huì)繼續(xù)接收完剩余消息呢?還是直接就丟棄剩余消息呢?下面是我做的一個(gè)試驗(yàn)代碼:
import "fmt"
func main() {
input := make(chan int, 10)
wait := make(chan int)
for i := 0; i < 10; i ++ {
input <- i
}
close(input)
go func() {
for {
if i, ok := <- input; ok {
fmt.Println(i)
} else {
break
}
}
wait <- 1
}()
<-wait
}
希望本文所述對(duì)大家的Go語(yǔ)言程序設(shè)計(jì)有所幫助。
相關(guān)文章
Go?runtime?調(diào)度器之系統(tǒng)調(diào)用引起的搶占
本文解析了在Go語(yǔ)言中,當(dāng)goroutine執(zhí)行的系統(tǒng)調(diào)用時(shí)間過(guò)長(zhǎng)時(shí),系統(tǒng)如何通過(guò)監(jiān)控和搶占機(jī)制來(lái)處理,以維持運(yùn)行效率和資源分配的平衡,通過(guò)具體的示例和流程圖,詳細(xì)展示了系統(tǒng)調(diào)用過(guò)程中的搶占操作,感興趣的朋友跟隨小編一起看看吧2024-09-09
Golang中println和fmt.Println區(qū)別解析
Golang 中打印數(shù)據(jù)通常使用 fmt.Println() 方法,也可以使用內(nèi)置的 println() 方法。這兩個(gè)方法大家可能都使用過(guò),它們的區(qū)別是什么呢?本文給大家詳細(xì)講解,感興趣的朋友跟隨小編一起看看吧2023-03-03
go語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單http服務(wù)的方法
這篇文章主要介紹了go語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單http服務(wù)的方法,涉及Go語(yǔ)言http操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-02-02
Go?http請(qǐng)求排隊(duì)處理實(shí)戰(zhàn)示例
這篇文章主要為大家介紹了Go?http請(qǐng)求排隊(duì)處理實(shí)戰(zhàn)實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
Go語(yǔ)言異常處理(Panic和recovering)用法詳解
異常處理是程序健壯性的關(guān)鍵,往往開(kāi)發(fā)人員的開(kāi)發(fā)經(jīng)驗(yàn)的多少?gòu)漠惓2糠痔幚砩暇湍艿玫襟w現(xiàn)。Go語(yǔ)言中沒(méi)有Try?Catch?Exception機(jī)制,但是提供了panic-and-recover機(jī)制,本文就來(lái)詳細(xì)講講他們的用法2022-07-07
golang?waitgroup輔助并發(fā)控制使用場(chǎng)景和方法解析
Golang?提供了簡(jiǎn)潔的?go?關(guān)鍵字來(lái)讓開(kāi)發(fā)者更容易的進(jìn)行并發(fā)編程,同時(shí)也提供了?WaitGroup?對(duì)象來(lái)輔助并發(fā)控制,今天我們就來(lái)分析下?WaitGroup?的使用方法,順便瞧一瞧它的底層源碼2023-09-09
golang實(shí)現(xiàn)mysql數(shù)據(jù)庫(kù)事務(wù)的提交與回滾
這篇文章主要介紹了golang實(shí)現(xiàn)mysql數(shù)據(jù)庫(kù)事務(wù)的提交與回滾,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04

