Bagaimanakah Penyata `select` Go Mengendalikan Operasi Terima dan Hantar Serentak?

Barbara Streisand
Lepaskan: 2024-11-17 04:34:03
asal
876 orang telah melayarinya

How Does Go's `select` Statement Handle Simultaneous Receive and Send Operations?

Berkomunikasi Saluran melalui Penyata Pilihan

Untuk memajukan hasil antara saluran, anda mungkin menghadapi kod seperti ini:

for {
    select {
        ...
        case ch2 <- <-ch1:
        ...
    }
}
Salin selepas log masuk

Reka bentuk ini menimbulkan persoalan tentang cara pilih beroperasi pada kedua-dua operasi terima dan hantar.

Terima atau Hantar, atau Kedua-duanya?

Bertentangan dengan memilih sama ada operasi secara individu, pilih penyata menilai keseluruhan operasi, termasuk operasi terima (<-ch1) dan hantar (ch2 <-), apabila memasukkan pilih. Ini bermakna:

case ch2 <- <-ch1:
Salin selepas log masuk

akan menyekat serta-merta menerima daripada ch1, dan kemudian pilih akan menentukan sama ada penghantaran pada ch2 diteruskan atau kes lain dipilih.

Pada dasarnya, pilih memperlakukan kes di atas sebagai:

case ch2 <- <something>:
Salin selepas log masuk

di mana dinilai apabila memasukkan pilihan.

Kesan Sampingan

Reka bentuk ini membawa kesan sampingan: jika kes dengan penerima bersarang (<-ch1) tidak dipilih , nilai daripada ch1 masih digunakan dan dibuang.

Atas ialah kandungan terperinci Bagaimanakah Penyata `select` Go Mengendalikan Operasi Terima dan Hantar Serentak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan