EasyCastleUNITY

[과제] 스레드와 코루틴 본문

개인 필기

[과제] 스레드와 코루틴

EasyCastleT 2023. 8. 15. 16:04

코루틴은 여러가지 특성을 가진다. 

1.협력형 멀티 태스킹

메서드를 실행하던 도중에, 언제든지 나왔다가 다시 들어올 수 있다. 

메서드를 중간에 빠져나왔다가, 다른 함수에 진입하고, 다시 원점으로 돌아와 

멈추었던 부분부터 다시 시작하는 특성을 가진다. 

이러한 특성을 통해 동시성을 지원한다. 

2. 동시성 프로그래밍 지원 

코루틴은 근본적으로 메서드이기에, 하나의 스레드에서도 여러 개의 코루틴을 활용할 수 있다. 

이 점을 통해, 여러 개의 작업을 한번에 처리하는 동시성 프로그래밍이 가능하다. 

코루틴과 스레드의 차이점

스레드와 코루틴의 차이점은,

애초에 스레드는 프로세스보다 더 작은 실행 흐름의 최소 단위이고 

코루틴은 필요에 따라 일시 정지를 할 수 있는 함수이기에 근본적으로 다르다는 것이다. 

 

하지만 스레드와 코루틴은 프로그래밍적으로 비슷한 역할을 하기에 두 개가 자주 엮이게 된다.

둘 다 동시성 구현을 하는데 사용되는데, 

필요한 용량의 차이가 꽤 크다는 것이다. 

 

스레드로 동시성을 구현을 했을 때는, 컴퓨터의 CPU는 한 개이기에 

cpu가 매번 스레드를 점유했다가 놓아주고, 다른 스레드를 점유했다가 놓아주고 하는 것을 반복을 해야 한다. 

이것을 컨텍스트 스위칭이라고 하는데, 이러한 컨텍스트 스위칭을 하면, 실행을 할 때 사용해야 되는 비용이 많아지게 된다. 

 

하지만 코루틴을 통해 동시성을 구현하였다면, 코루틴은 하나의 스레드에서 여러 개를 사용할 수 있기에, 

CPU가 하나의 스레드를 점유해도, 동시성 프로그래밍을 컨텍스트 스위칭 없이도 구현하는 것이 가능하다. 

 

그렇기에 동시성 프로그래밍 구현의 비용이 아주 가벼워진다. 

 

다시 정리해보자면, 스레드와 코루틴은 근본적인 부분에서 다르지만, 프로그래밍 상에서의 역할이 비슷하다.

둘다 동시성을 구현하는데 이용되는데, 이 구현을 하는 방법에서 차지하는 용량이 다른 것이 가장 큰 차이점이다. 

스레드만을 이용해서 동시성을 구현하면 위에서 언급한 컨텍스트 스위칭으로 인해 비용이 많아지게 되고

코루틴을 응용해서 동시성을 구현하면 이러한 비용이 아주 가벼워진다는 차이점이 있다. 

 

코루틴은 시분할 시스템으로 동작한다. 

멀티스레드는 병렬처리를 한다

 

 

 

'개인 필기' 카테고리의 다른 글

정규화 벡터  (0) 2023.08.18
유니티 라이프 사이클  (0) 2023.08.16
[과제] 프로세스(Process), 스레드 (Thread), 코루틴 ( coroutine )  (0) 2023.08.15
[과제] 동기와 비동기  (0) 2023.08.14
Unity Animation  (0) 2023.08.02