[실행 방식]

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


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


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


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

+ Recent posts