Golang Channel
·
Interview/Golang
Golang에서 CSP?Go 언어의 채널(Channel)은 Goroutine 간에 안전하게 데이터를 주고받을 수 있는 메커니즘입니다. 채널은 동시성 프로그래밍에서 중요한 역할을 하며, Go 언어의 동시성 모델인 Communicating Sequential Processes (CSP)를 구현하는 데 사용됩니다.Communicating Sequential Processe(CSP)CSP (Communicating Sequential Processes)는 동시성을 다루기 위한 수학적 모델로, 1978년 영국의 컴퓨터 과학자 Tony Hoare에 의해 제안되었습니다. 이 모델은 여러 개의 독립적인 프로세스들이 서로 통신을 통해 협력하여 작업을 수행하는 방식으로 동시성을 표현합니다. 프로세스는 각기 독립적으로 실행..
Golang의 Goroutine
·
Interview/Golang
GoroutineGolang에서 Goroutine은 경량 스레드의 일종으로, 함수나 메서드를 동시에 실행하기 위해 사용됩니다.일반적인 스레드와는 다르게, 매우 가볍고 고효율적으로 동작하기 때문에 많은 수의 Goroutine을 동시에 실행할 수 있습니다. Goroutine은 Go 런타임이 내부적으로 관리하는 작은 작업 단위입니다.Goroutine 사용 방법다음과 같이 go 키워드를 사용하여 함수를 goroutine으로 실행할 수 있습니다:go someFunction()이 코드를 실행하면 someFunction()은 별도의 goroutine으로 실행되며, 메인 프로그램과 병렬로 동작하게 됩니다. 중요한 점은, go 키워드로 실행된 함수는 비동기적으로 동작하기 때문에 해당 함수가 언제 완료되는지는 보장되지 않..
Golang Garbage Collection(GC)
·
Interview/Golang
Golang Garbage Collection(GC)Golang에서의 가비지 컬렉션(Garbage Collection, GC)은 자동 메모리 관리를 통해 사용되지 않는 메모리(즉, 더 이상 참조되지 않는 객체)를 회수하는 과정입니다.이를 통해 개발자는 메모리 해제에 대해 신경 쓰지 않고 프로그램을 작성할 수 있습니다.Go의 가비지 컬렉션은 성능을 최대한 유지하면서도 메모리 누수를 방지하도록 설계되었습니다.Golang의 GC 특징Concurrent Garbage Collector (동시 가비지 컬렉터)Go의 GC는 stop-the-world 방식을 최소화하기 위해 동시성(concurrent)으로 동작합니다. 즉, 애플리케이션이 계속 실행되는 동안에도 가비지 컬렉션을 수행할 수 있습니다. 이로 인해 긴 시간..
Golang 언어적 철학
·
Interview/Golang
Golang 언어적 철학Go의 언어적 철학Golang(Go)의 언어적 철학은 주로 단순성, 효율성, 안정성, 그리고 동시성을 중점으로 설계되었습니다.이 철학은 시스템 프로그래밍의 복잡함을 줄이고, 대규모 분산 시스템을 구축하는 데 적합한 언어를 만들기 위해 탄생했으며, 다른 언어와의 몇 가지 핵심적인 차이점을 가지고 있습니다.1. 단순성 (Simplicity)Go는 최소한의 복잡성으로 강력한 기능을 제공하는 것을 목표로 합니다. 언어 설계 과정에서 지나치게 복잡한 기능들을 의도적으로 배제하여, 개발자가 코드를 읽고 이해하는 것이 더 쉽도록 만들었습니다. 이는 보일러플레이트 코드의 감소와 명료한 코드로 이어집니다.예시: Go는 상속(inheritance), 메타프로그래밍(macros), 그리고 예외(exc..
김 정출
'Interview/Golang' 카테고리의 글 목록