차이: 1. 고루틴은 채널을 통해 통신하고, 코루틴은 항복 및 복구 작업을 통해 통신합니다. 2. 고루틴 코루틴은 완전히 동기화되지 않으며 여러 코어를 사용하여 병렬로 실행될 수 있습니다. 코루틴 코루틴은 완전히 동기화되어 병렬로 실행되지 않습니다. 3. 고루틴은 하나의 스레드에서 여러 코루틴/스레드 간을 전환할 수 있습니다. 4. 애플리케이션이 오랜 시간 동안 많은 양의 CPU를 점유합니다. 고루틴의 사용자는 이 작업을 종료할 수 있는 권한이 있지만 코루틴은 그렇지 않습니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, GO 버전 1.18, Dell G3 컴퓨터.
C#, Lua 및 Python 언어는 모두 코루틴 기능을 지원합니다. 코루틴과 고루틴은 둘 다 독립적인 환경에서 함수나 명령문을 실행할 수 있지만 두 가지 차이점이 있습니다.
고루틴은 병렬로 실행될 수 있지만
코루틴은 항상 순차적으로 실행됩니다.
고루틴은 병렬(또는 병렬 방식으로 배포 가능)을 의미하며, 코루틴은 일반적으로 이와 같지 않습니다. 고루틴은 채널을 통해 통신하며, 고루틴은 코루틴보다 더 강력하고 효율적입니다. 코루틴을 고루틴으로.
협의적으로 고루틴은 다중 스레드 환경에서 발생할 수 있으며, 고루틴은 우선순위가 높은 지원을 얻기 위해 스스로를 제어할 수 없으며, 코루틴 프로그램은 호스트보다 먼저 제어권을 적극적으로 넘겨야 합니다. 제어권을 획득하고 제어권을 다른 코루틴에 넘겨줄 수 있습니다.
고루틴 간에 채널 통신이 사용되며, 코루틴은 항복 및 재개 작업을 사용합니다.
고루틴과 코루틴의 개념과 작동 메커니즘은 초기 운영 체제에서 파생되었습니다.
코루틴의 실행 메커니즘은 협업 작업 처리에 속합니다. 초기 운영 체제에서는 각 애플리케이션이 운영 체제의 작업 처리 규칙을 준수해야 했습니다. 애플리케이션이 CPU를 사용할 필요가 없으면 적극적으로 CPU를 넘겨줍니다. 사용권. 개발자가 실수로 또는 의도적으로 응용 프로그램이 오랫동안 CPU를 점유하게 하면 운영 체제는 이에 대해 아무 조치도 취할 수 없으며 그 결과 컴퓨터가 쉽게 응답하지 않거나 정지될 수 있습니다.
goroutine은 선제적 작업 처리로 기존 멀티 스레드 및 멀티 프로세스 작업 처리와 매우 유사합니다. 애플리케이션의 CPU 제어는 궁극적으로 운영 체제에서 관리해야 합니다. 운영 체제에서 애플리케이션이 오랫동안 많은 양의 CPU를 점유하고 있음을 발견하면 사용자는 작업을 종료할 권한이 있습니다.
coroutine과 goroutine
의 차이점 요약:
goroutine은 채널을 통해 통신합니다.
coroutine은 항복 및 복구 작업을 통해 통신합니다.
차이점 2:
고루틴 코루틴은 완전히 동기화되지 않으며 여러 코어를 사용하여 병렬로 실행될 수 있습니다.
코루틴 코루틴은 완전히 동기화되며 병렬이 아닙니다.
goroutine 여러 스레드에서 여러 코루틴을 전환하여 여러 코어를 사용할 수 있을 뿐만 아니라 전환 오버헤드도 줄일 수 있습니다.
코루틴은 하나의 스레드에서만 실행됩니다. 하나의 스레드에서만 실행됩니다.
차이점 4:
goroutine 운영 체제 애플리케이션이 오랫동안 많은 양의 CPU를 차지하는 것으로 확인되면 사용자는 이 작업을 종료할 권리가 있습니다.
코루틴 개발자가 실수로 또는 의도적으로 애플리케이션이 오랫동안 CPU를 점유하게 하면 운영 체제는 아무 것도 할 수 없습니다. 그 결과 컴퓨터가 쉽게 응답하지 않거나 충돌할 수 있습니다.
【관련 권장 사항:
Go 비디오 튜토리얼위 내용은 고루틴과 코루틴의 차이점은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!