在Go 程式語言的第8 章中,以下語句是關於並發echo 伺服器:
由go 啟動的函數的參數在執行go 語句本身時進行評估;因此input.Text() 在主goroutine 中被求值。
這條語句的意思是,當執行 go 語句時,立即對 input.Text() 函數求值,並將其結果傳遞給 go echo () 協程。這與常規函數呼叫相反,常規函數呼叫在呼叫函數時計算函數參數,並將結果傳遞給被呼叫函數。
造成這種差異的原因是 go 語句開始一個新的goroutine,並且 goroutine 與主 goroutine 並發執行。如果 go 啟動的函數的參數在呼叫函數時被求值,則主 Goroutine 必須等待函數完成才能啟動新的 Goroutine。這將違背使用 goroutine 的目的,即啟用並發。
透過在執行 go 語句本身時評估 go 啟動的函數的參數,主 goroutine 不必等待該函數來完成。這允許同時啟動 goroutine,這是所需的行為。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3