Adakah penutupan saluran golang juga akan memaksa penyegerakan goroutine?

WBOY
Lepaskan: 2024-02-09 20:15:31
ke hadapan
434 orang telah melayarinya

关闭 golang 通道是否也会强制 goroutine 同步?

Editor PHP Xigua berada di sini untuk menjawab soalan tentang saluran golang: Adakah penutupan saluran golang juga memaksa penyegerakan goroutine? Biasanya, menutup saluran tidak memaksa goroutine untuk menyegerak, tetapi menutup saluran mencetuskan operasi baca pada saluran untuk mengembalikan nilai sifar dan nilai boolean. Jika terdapat data yang belum dibaca dalam saluran, operasi baca akan mengembalikan data dan benar jika tiada data yang belum dibaca dalam saluran, operasi baca akan mengembalikan sifar dan palsu. Oleh itu, selepas menutup saluran, anda boleh menilai sama ada semua data dalam saluran telah dibaca dengan membaca saluran.

Kandungan soalan

Seperti yang dinyatakan dalam buku "Go Programming Language" (halaman 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.
Salin selepas log masuk

Adakah perkara yang sama berlaku jika saluran ditutup? Maksud saya, adakah penerimaan menutup saluran sentiasa berlaku sebelum goroutine yang baru menutupnya bangun semula?

Saya masih ingat membaca sesuatu yang berkaitan dengan itu. Saya mencari dalam buku tetapi tidak menemuinya.

Penyelesaian

Menutup saluran tidak memaksa goroutine untuk menyegerak seperti menghantar pada saluran yang tidak dibuffer.

Go Memory ModelSpesifikasi mengatakan:

Panggilan goroutine close() tidak akan menghalang menunggu goroutine lain menerima nilai sifar.

Seorang Goroutine menghantar nilai ke blok saluran yang tidak dibuffer sehingga Goroutine lain menerima nilai tersebut.

Atas ialah kandungan terperinci Adakah penutupan saluran golang juga akan memaksa penyegerakan goroutine?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!