Go의 경량 스레드인 고루틴은 동시성에 매우 중요합니다. 코드 성능을 최적화하려면 언제 제어가 양보되는지 이해하는 것이 필수적입니다.
기존 선점 지점
이전에는 고루틴이 다음을 포함한 특정 지점에서만 양보했습니다.
비동기 선점(Go 1.14)
Go 버전 1.14에서는 비동기 선점을 도입했습니다. 즉, 이제 고루틴이 거의 제어권을 양보할 수 있습니다. 어딘가에. 이렇게 하면 교착 상태 및 지연 위험이 줄어듭니다.
예제의 선점
질문에 제공된 예제 코드에는 함수 호출이나 차단 syscall이 포함되어 있지 않습니다. 그러나 출력에는 여전히 메시지 인터리빙이 표시되어 고루틴이 양보하고 있음을 나타냅니다.
선점의 가능한 이유
결론
Go 프로그램에서 고루틴은 이제 거의 모든 위치에서 비동기적으로 제어권을 양보할 수 있습니다. 가리키다. 이는 특정 선점 지점이 필요했던 이전 버전보다 개선된 사항입니다. 그러나 가비지 수집의 잠재적 영향과 고루틴 스케줄링에 영향을 미칠 수 있는 기타 요인을 인식하는 것이 중요합니다.
위 내용은 Go에서 고루틴은 언제 산출됩니까: 동기식 선점과 비동기식 선점?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!