본문 바로가기
Programming/Languages (Java, etc)

코루틴 Thread confinement 기법

by kghworks 2024. 10. 28.

 

스레드의 동시 상태변경 문제는 코루틴에서도 동일하게 접할 수 있다.
상태공유를 코루틴 간에 무분별하게 하면, thread-safe 하지 못한 코드가 작성될 수 있다.

따라서 아래처럼 임계영역은 하나의 스레드 컨텍스트로 제한할 수 있다. 이를 Thread confinement이라 한다.

Thread confinement : fine-grained

Completed 100000 actions in 474 ms

 

 임계영역에 진입할 때마다 싱글 스레드 컨텍스트로 전환시키는 위와 같은 방법을 fine-grained 방식이라 한다. 다음에 소개할 coarse-grained 방식보다 상대적으로 느리다.

 

Thread confinement : coarse-grained

Completed 100000 actions in 9 ms

 

 위 방식은 coarse-grained 방식이라 한다. 애초에 임계영역에 진입하기 전에 임계영역을 호출하는 함수 자체를 싱글 스레드 컨텍스트로 래핑 했다.

 사실 두 방식의 차이보다는, 스레드 컨텍스트의 문맥교환의 비용을 더 체감할 수 있는 예제였다고 생각한다.


참고

https://kotlinlang.org/docs/shared-mutable-state-and-concurrency.html

 

Shared mutable state and concurrency | Kotlin

 

kotlinlang.org

 

댓글