[Go] 17. 고루틴
고루틴은 경량 스레드로, 함수 or 명령을 동시에 실행할 때 사용합니다. main() 함수는 고루틴에 의해 실행되는 함수로, Go 프로그램은 최소 1개 이상의 고루틴으로 구성되어있습니다. 원래의 CPU코어는 한번에 하나의 명령을 수행하지만, 컨텍스트 스위칭을 이용하여 여러개의 스레드를 전환하며 실행할 수 있습니다. 다만, 컨텍스트 스위칭은 스레드 전환 이전에 instruction pointer(명령 포인터), 스택 메모리 등의 정보를 저장하여 작업중인 스레드를 기록하는 과정을 거치고, 복원하는 일을 거치는데 이러한 부분에 의해 컨텍스트 스위칭 비용 이 발생되게 됩니다. CPU코어 수에 비해 스레드 수가 너무 많을시(CPU코어수의 2배이상으로 스레드를 설정), 컨텍스트 스위칭 비용에 의한 성능저하가 발생될..
2024. 3. 11. 18:06