context (1) 썸네일형 리스트형 Golang 고루틴(goroutine) 라이프사이클 관리 - context.Context 개요 (Overview) Golang에서는 고루틴이라는 비동기 작업을 생성할 수 있고 쓰레드와 비교해 가볍기 때문에 동시에 수백 개를 만들어도 메모리를 많이 사용하지 않는다. 다만 고루틴은 비동기로 실행되고 쓰레드와 다르게 종료할 수 있는 함수를 제공하지 않는다. 즉 고루틴을 생성한 함수가 종료되더라도 생성된 고루틴은 남아서 계속 실행된다. 따라서 별도의 시그널을 통해서 종료해줘야 한다. 잠깐 실행되는 애플리케이션이면 큰 문제가 없지만 서버 애플리케이션과 같이 한번 실행하면 짧게는 며칠 길게는 몇 달을 넘게 계속 돌린다. 이때 생성한 고루틴을 제때 정리해주지 않으면 실행하는 고루틴이 계속 쌓여서 Memory Leak이 발생하게 되고 아무리 가벼운 고루틴이더라도 계속 쌓이면 결국 OOM(Out of Mem.. 이전 1 다음