>백엔드 개발 >Golang >Go에서 동시성과 병렬성의 차이점은 무엇입니까

Go에서 동시성과 병렬성의 차이점은 무엇입니까

青灯夜游
青灯夜游원래의
2023-01-10 18:13:591548검색

동시성과 병렬성의 차이점: 1. 동시성은 서로 다른 시점에 처리하기 위해 프로세서에 작업을 할당하는 것을 의미하는 반면, 병렬성은 각 작업을 각 프로세서에 할당하여 독립적으로 완료하는 것을 의미합니다. 2. 동시성에서는 동일한 시점에, 작업은 동시에 실행되지 않지만 동시에 동일한 시점에 작업이 동시에 실행되어야 합니다.

Go에서 동시성과 병렬성의 차이점은 무엇입니까

이 튜토리얼의 운영 환경: Windows 7 시스템, GO 버전 1.18, Dell G3 컴퓨터.

동시성 개념을 이해할 때 항상 또 다른 병렬성 개념이 관련됩니다. 동시성과 병렬성의 차이점을 이해해 봅시다.

동시성: 다양한 시점에 처리할 수 있도록 작업을 프로세서에 전달합니다. 동시에 작업은 동시에 실행되지 않습니다.

Parallelism: 각 작업을 각 프로세서에 할당하여 독립적으로 완료합니다. 동일한 시점에 작업이 동시에 실행되어야 합니다.

동시성은 병렬성이 아닙니다. 병렬성은 서로 다른 물리적 프로세서에서 동시에 서로 다른 코드 조각을 실행하는 것입니다. 병렬성의 핵심은 동시에 많은 일을 하는 것이며, 동시성은 동시에 많은 일을 관리하는 것을 의미하며, 이러한 일은 다른 일을 하기 위해 일시 ​​중지되기 전에 절반만 수행될 수 있습니다.

운영 체제와 하드웨어의 총 리소스는 일반적으로 매우 작지만 시스템이 동시에 많은 작업을 수행하도록 지원할 수 있기 때문에 많은 경우 동시성이 병렬 처리보다 낫습니다. "더 적은 자원으로 더 많은 일을 한다"는 이 철학은 Go 언어의 디자인을 이끄는 철학이기도 합니다.

고루틴을 병렬화하려면 두 개 이상의 논리 프로세서를 사용해야 합니다. 여러 논리 프로세서가 있는 경우 스케줄러는 각 논리 프로세서에 고르루틴을 균등하게 배포합니다. 이렇게 하면 고루틴이 다른 스레드에서 실행됩니다. 그러나 실제로 병렬성을 달성하려면 사용자는 여러 개의 물리적 프로세서가 있는 시스템에서 프로그램을 실행해야 합니다. 그렇지 않으면 Go 언어가 실행 시 여러 스레드를 사용하더라도 고루틴은 동일한 물리적 프로세서에서 동시에 실행되며 병렬 효과는 달성되지 않습니다.

다음 그림은 하나의 논리 프로세서에서 동시에 고루틴을 실행하는 것과 두 개의 논리 프로세서에서 두 개의 동시 고루틴을 병렬로 실행하는 것의 차이점을 보여줍니다. 스케줄러에는 Go 언어가 출시되면 업데이트되고 개선될 몇 가지 영리한 알고리즘이 포함되어 있으므로 언어 ​​런타임에서 논리 프로세서의 기본 설정을 맹목적으로 수정하지 않는 것이 좋습니다. 논리 프로세서 수를 수정하면 성능이 향상될 것이라고 정말로 생각한다면 언어 런타임 매개변수를 약간 조정할 수도 있습니다.

Go에서 동시성과 병렬성의 차이점은 무엇입니까
그림: 동시성과 병렬성의 차이

Go 언어는 GOMAXPROCS의 수가 작업 수와 같을 때 병렬 실행을 달성할 수 있지만 일반적인 상황에서는 동시에 실행됩니다.

【관련 추천: Go 비디오 튜토리얼, 프로그래밍 교육

위 내용은 Go에서 동시성과 병렬성의 차이점은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.