Rumah >pembangunan bahagian belakang >Golang >Mengapakah `input.Text()` Dinilai dalam Goroutine Utama Apabila Menggunakan Pernyataan `go`?

Mengapakah `input.Text()` Dinilai dalam Goroutine Utama Apabila Menggunakan Pernyataan `go`?

Patricia Arquette
Patricia Arquetteasal
2024-11-14 09:26:01584semak imbas

Why is `input.Text()` Evaluated in the Main Goroutine When Using `go` Statements?

Mengapa input.Text() Dinilai dalam Goroutine Utama

Dalam bab 8 Bahasa Pengaturcaraan Go, pernyataan berikut ialah dibuat tentang pelayan gema concurrency:

Argumen untuk fungsi yang dimulakan oleh go dinilai apabila pernyataan go itu sendiri dilaksanakan; oleh itu input.Text() dinilai dalam goroutine utama.

Pernyataan ini bermakna apabila pernyataan go dilaksanakan, fungsi input.Text() akan dinilai serta-merta, dan hasilnya dihantar ke go echo () goroutine. Ini berbeza dengan panggilan fungsi biasa, di mana argumen fungsi dinilai apabila fungsi dipanggil dan hasilnya dihantar ke fungsi yang dipanggil.

Sebab perbezaan ini ialah pernyataan go memulakan yang baharu goroutine, dan goroutine dilaksanakan serentak dengan goroutine utama. Jika argumen kepada fungsi yang dimulakan oleh go dinilai apabila fungsi dipanggil, goroutine utama perlu menunggu untuk fungsi selesai sebelum memulakan goroutine baharu. Ini akan menggagalkan tujuan menggunakan goroutine, iaitu untuk mendayakan konkurensi.

Dengan menilai hujah untuk fungsi yang dimulakan oleh go apabila pernyataan go itu sendiri dilaksanakan, goroutine utama tidak perlu menunggu untuk fungsi untuk melengkapkan. Ini membolehkan goroutine dimulakan serentak, iaitu tingkah laku yang diingini.

Atas ialah kandungan terperinci Mengapakah `input.Text()` Dinilai dalam Goroutine Utama Apabila Menggunakan Pernyataan `go`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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