在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