프로세스 = 프로그램의 인스턴스
프로그램은 흔히 우리가 아는 실행파일이며, 대표적인 윈도우 실행파일 exe가 있다.
프로그램을 실행시키면 작업관리자에는 프로세스가 등장하며, 운영체제(OS)는 이를 관리한다.
쉬운 예시로 프로그램이 코카콜라 본사라면
프로세스는 코카콜라 한국지부라고 생각할수있다.
스레드 = 프로세스에서 작동하는 여러 흐름의 단위
스레드는 CPU에서 기능단위중 하나로 보통 코어의 갯수와 크게 연관이있다.
라이젠5 3600x의 경우 6개의 코어에 각 2개의 멀티 스레드가 적용되어 총 12개의 스레드를 가지고있다는 내용이다.
스레드는 프로세스내에서 서로 별도의 스택을 가지고 프로세스의 연산을 처리한다.
쉽게말해 코카콜라 한국지부에 있는 직원A 직원B ... 라고 볼 수 있다.
직원이 나뉘어저 있으니 직원A는 마케팅 업무를하고 직원B는 회계업무를 한다는 식으로 서로 다른 업무를 맡을수있다
각 업무가 동시에 진행된다는 점에서 병렬성을 띈다.
실제로는 CPU가 시분할을 통해 두 직원을 빠르게 왔다갔다 하는것이라
동시에 작업하는것처럼 보일뿐 동시에 작업하는것은 아니다.
코루틴 = 스레드를 더 괴롭혀보자
코루틴은 스레드에서 특정 작업을 하는도중, 모종의 이유로 멈춰야하는 상황이 왔을때, 해당 위치를 기억하고 다른 업무를 수행하다 다시 중단점으로 돌아오는 기능을 말한다.
다른 작업을 다른 스레드에게 맡겼다가 해당 작업의 리턴을 기다려야하는 blocking을 당하지 않을수 있다는 점에서 강점이있다.
또 기존 작업을 버리는것이 아니기에 context switching에 별도 비용이 없다는 장점이있다.
스레드와 코루틴의 차이점
여기서 말하는 스레드는 멀티스레드를 말하는것이다
멀티스레드로 비동기 처리를 진행하는것과
코루틴을 이용해서 비동기 처리를 진행하는것
둘다 똑같이 비동기 처리인데, 이게 무슨 차이냐? 라는게 핵심이다.
차이점은 명료하다
멀티스레드는 스레드 여러개가 여러작업을 병렬적으로 처리하는것이고
코루틴은 하나의 스레드가 여러작업을 병렬적으로 처리하는것이다.
'게임 클라이언트 프로그래밍' 카테고리의 다른 글
carSwipe (0) | 2024.08.20 |
---|---|
표창 던지기 (0) | 2024.08.20 |