Golang Concurrency Explained (Crash Course)
- Go 언어에서 동시성은 매우 중요하며, 인터뷰 질문의 주요 주제입니다. 🧑💻
- 기본적인 순차적 프로그램에서 시작하여 점진적으로 복잡한 동시성 구현으로 나아갑니다. 📈
- go 루틴, 웨이트 그룹, 채널과 같은 Go의 동시성 기본 요소들을 단계별로 설명합니다. 📚
- 순차적 프로그램은 각 주문을 하나씩 처리하므로 전체 처리 시간이 오래 걸립니다. 🐌
- go 루틴을 사용하면 작업을 비동기적으로 실행하여 프로그램 속도를 향상시킬 수 있습니다. 🚀
- go 루틴은 경량 스레드처럼 작동하지만, CPU 스레드와는 다를 수 있습니다. 💡
- go 루틴은 메인 프로그램과 독립적으로 실행되므로, 동기화가 필요합니다. 🤝
- 웨이트 그룹은 go 루틴의 완료를 기다리는 데 사용되는 Go의 기본 요소입니다. ⏳
- 웨이트 그룹을 사용하려면 sync 패키지를 임포트하고, 웨이트 그룹을 초기화해야 합니다. ⚙️
- 웨이트 그룹에 go 루틴의 수를 추가하고, 각 go 루틴이 완료되면 Done() 메서드를 호출합니다. ✅
- defer 키워드를 사용하면 함수가 종료될 때 특정 코드를 실행할 수 있어 리소스 정리 등에 유용합니다. 🧹
- 채널은 go 루틴 간에 데이터를 전송하는 데 사용됩니다. ✉️
- 채널을 사용하려면 make 키워드를 사용하여 채널을 생성하고, 채널의 타입을 지정해야 합니다. 🛠️
- 화살표 연산자 (<-) 를 사용하여 채널에 데이터를 보내거나 받을 수 있습니다. ➡️
- 채널 사용이 끝나면 close() 함수를 사용하여 채널을 닫아야 합니다. 🚪