關閉 golang 頻道是否也會強制 goroutine 同步?
php小編西瓜在這裡為大家解答一個關於golang頻道的問題:關閉golang頻道是否也會強制goroutine同步?通常情況下,關閉通道不會強制goroutine同步,但關閉通道會觸發對通道的讀取操作返回零值和一個布林值。如果通道中還有未讀取的數據,那麼讀取操作會傳回資料和true;如果通道中沒有未讀取的數據,那麼讀取操作會傳回零值和false。因此,在關閉通道後,可以透過讀取通道來判斷是否已經讀取完通道中的所有資料。
問題內容
如《Go 程式語言》一書(第 226 頁)所述:
Communication over an unbuffered channel causes the sending and receiving goroutines to synchronize. Because of this, unbuffered channels are sometimes called synchronous channels. When a value is sent on an unbuffered channel, the receipt of the value happens before the reawakening of the sending goroutine.
登入後複製
關閉通道也會發生同樣的情況嗎?我的意思是,關閉通道的接收總是發生在剛剛關閉它的 goroutine 重新喚醒之前嗎?
我記得我讀過一些與之相關的內容。我在書上搜尋過,但沒有找到。
解決方法
關閉通道不會像在無緩衝通道上發送那樣強制 goroutine 同步。
Go 記憶體模型規格說:
呼叫 close()
的 goroutine 不會阻塞等待另一個 goroutine 接收零值。
傳送值給無緩衝通道的 Goroutine 會阻塞,直到另一個 Goroutine 接收到該值。
以上是關閉 golang 頻道是否也會強制 goroutine 同步?的詳細內容。更多資訊請關注PHP中文網其他相關文章!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前
By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
擊敗分裂小說需要多長時間?
3 週前
By DDD
R.E.P.O.保存文件位置:在哪里以及如何保護它?
3 週前
By DDD

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)