개요

컴퓨터에서 여러 프로그램을 한꺼번에 처리하는 방법 중에 동시성병렬성이 있다. Golang동시성을 처리하기에 용이하도록 설계한 언어로, 이를 위해 Goroutine, Channel 등의 기능을 제공한다. 해당 기능들 덕분에 Golang은 다른 언어에 비해 동시성을 처리하는 데 유리하다고 할 수 있다.


목차

  1. 동시성이란: 병렬성 vs 동시성
  2. 기존의 동시성 처리 방법: 멀티 태스킹, 스레드, context switching
  3. Goroutine: Go에서 스레드를 다루는 방법
  4. Channel: Goroutine 간의 통신
  5. 결론: GoLang은 동시성 처리가 용이하게 설계됐고, 다른 언어에 없는 기능을 통해 이를 실천하고 있다.
  6. 의문점: 다른 언어들은 어떻게 동시성을 처리하는가?
  7. 참고자료

동시성이란

병렬성 vs 동시성

컴퓨터에서 여러 작업동시에 처리하는 방법에는 병렬성동시성이 있다. 이 때 병렬성과 동시성은 다음과 같이 정리할 수 있다.

이 때 병렬성여러 프로세서동시에 여러 작업을 처리하는 것을 의미하고, 동시성하나의 프로세서가 여러 작업을 번갈아가며 처리하는 것을 의미한다.1

즉, Go가 동시성을 처리하는 데 유리하다면 작업 간에 전환이 빠르다는 것을 의미한다. 그리고 Go는 동시성을 처리하는 데 유리하게 설계된 언어이다2


기존의 동시성 처리 방법


Goroutine: Go에서 스레드를 다루는 방법


Channel: Goroutine 간의 통신

Channel Mutex
데이터의 소유권을 이전한다 캐시
일의 단위를 나누어서 처리한다 상태
비동기 결과를 소통한다 데이터를 공유한다

결론

GoLang은 태생적으로 동시성을 처리하기에 효율적인 방법을 고안하여 만들어진 언어이다. 이를 위해 GoroutineChannel과 같은 기능을 제공하고 있다. 이 때문에 Golang이 동시성을 처리하는 데 유리하다고 할 수 있다.


의문점


참고자료

  1. 동시성과 병렬성의 개념 차이 

  2. Concurrency is not parallelism 

  3. Golang은 왜 동시성에 좋다고 할까 


2024-03-19
다음 글: Locust vs k6 - 부하 테스트 도구 선택 → 카테고리로 돌아가기 ↩