"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > `go` 문을 사용할 때 기본 고루틴에서 `input.Text()`가 평가되는 이유는 무엇입니까?

`go` 문을 사용할 때 기본 고루틴에서 `input.Text()`가 평가되는 이유는 무엇입니까?

2024년 11월 20일에 게시됨
검색:967

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

메인 고루틴에서 input.Text()가 평가되는 이유

Go 프로그래밍 언어의 8장에서 다음 명령문은 다음과 같습니다. 동시성 에코 서버에 대해 작성되었습니다:

go에 의해 시작된 함수에 대한 인수는 go 문 자체가 실행될 때 평가됩니다. 따라서 input.Text()는 기본 고루틴에서 평가됩니다.

이 명령문은 go 문이 실행될 때 input.Text() 함수가 즉시 평가되고 그 결과가 go echo에 전달된다는 의미입니다. () 고루틴. 이는 함수가 호출될 때 함수 인수가 평가되고 결과가 호출된 함수에 전달되는 일반 함수 호출과 대조됩니다.

이 차이가 나는 이유는 go 문이 새 함수를 시작하기 때문입니다. 고루틴과 고루틴은 메인 고루틴과 동시에 실행됩니다. 함수가 호출될 때 go로 시작된 함수에 대한 인수가 평가된 경우 기본 고루틴은 새 고루틴을 시작하기 전에 함수가 완료될 때까지 기다려야 합니다. 이는 동시성을 활성화하려는 고루틴 사용 목적을 무산시킵니다.

go 문 자체가 실행될 때 go에 의해 시작된 함수에 대한 인수를 평가함으로써 기본 고루틴은 함수를 기다릴 필요가 없습니다. 완료합니다. 이를 통해 고루틴이 동시에 시작될 수 있으며 이는 원하는 동작입니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3