반응형
오늘 면접을 보았는데 문득 blocking과 non-blocking의 차이점을 설명해보라는 질문을 받았다.
대충 뭔지는 알고 있었지만 개똥같은 대답을 했기에 기록해본다.
Blocking
코루틴의 블로킹은 현재 실행 중인 스레드를 중단시키고 작업이 완료될 때까지 대기하는 방식
즉, 블로킹이 호출이 발생하면 해당 스레드가 멈춰서 다른 작업을 수행하지 않고 작업이 완료될 때 까지 기다린다.
다른 작업을 수행하지 않지만 여전히 시스템 리소스를 소비하여 스레드가 낭비될 수 있으며, 네트워크 요청을 UI 스레드에서 블로킹 방식으로 처리하면, 네트워크 응답을 받을 때 까지 앱이 멈춘 것 처럼 보일 수 있다.
Non-Blocking
작업을 대기하는 동안 스레드를 멈추지 않고, 다른 작업을 계속 수행할 수 있도록 하는 방식이다. 위 방식이 비동기 방식을 의미한다.
Non-Blocking에서 일시 중단을 시킬 수는 있지만 그 동안에도 스레드는 차단되지 않고 다른 작업을 수행할 수 있다.
즉 우리가 사용하는 코루틴은 대부분 Non-Blocking이며 스레드를 차단하지 않고 작업을 비동기적으로 처리하는 방식이다.
마무리
결국 개같은 답변을 했다
반응형
'[# 2]…My DevelopStory' 카테고리의 다른 글
[Android] Android VIewModel이 필요한 이유 / 뷰모델이 쓰이는 이유 (0) | 2024.09.23 |
---|---|
[Android Compose] Icon onClick Event (0) | 2024.08.29 |
[Android Compose] BasicTextField Decimal formattng ~ 천단위 쉼표 추가 (0) | 2024.08.28 |
[Android Compose] BasicTextField을 이용한 커스텀 사투기 (2) | 2024.08.27 |
[Android Compose] Scaffold Content padding parameter it is not use (0) | 2024.08.26 |