스레드(Thread)

스레드는 운영 체제가 CPU의 시간을 분할하여 여러 작업을 동시에 진행할 수 있도록 하는 기술이다.

프로세스 내에서 실행되는 여러 실행의 흐름을 가리키며, 

각 스레드는 프로세스의 자원을 공유하면서 독립적으로 실행된다.

 

 

 

코루틴(Coroutine)

코루틴은 협력적 멀티태스킹을 가능하게 하는 프로그래밍 구조로,

개발자가 명시적으로 언제 멈추고 언제 실행될지를 제어할 수 있다.

코루틴은 비동기 작업을 간소화하고 관리하기 위해 주로 사용된다.

 

 

 

 

주요 차이점

[실행 방식]

스레드: 운영체제가 스케줄링하며, 동시에 여러 스레드가 실행될 수 있다.
코루틴: 개발자가 코드상에서 명시적으로 언제 멈추고 언제 실행될지를 제어한다.


[메모리 사용]
스레드: 각 스레드는 자신만의 스택을 가지며, 메모리 사용량이 상대적으로 크다.
코루틴: 더 적은 메모리를 사용하며, 여러 코루틴이 하나의 스레드에서 실행될 수 있다.


[동기화 문제]
스레드멀티 스레드 환경에서는 동기화 문제가 발생할 수 있으며, 이를 해결하기 위해 락, 뮤텍스, 세마포어 등의 도구가 필요하다.
코루틴: 일반적으로 멀티 스레드 환경에서 발생하는 동기화 문제에 덜 민감하다. 하지만 여러 코루틴이 데이터를 공유할 때 동기화 문제가 발생할 수 있다.


[생성과 전환 오버헤드]
스레드: 스레드의 생성 및 전환에는 상대적으로 높은 오버헤드가 발생한다.
코루틴: 코루틴은 경량이기 때문에 생성 및 전환의 오버헤드가 매우 낮다.

'산대특 > 게임 알고리즘' 카테고리의 다른 글

디자인 패턴  (0) 2024.02.05
싱글톤 패턴  (0) 2024.02.05
프로세스(Process)와 스레드(Thread)  (0) 2024.02.02
자료구조 - [Tree]  (0) 2024.02.01
[C#] Item Guide 만들기  (0) 2024.01.25

+ Recent posts