<TIL> 79. 비동기/동기, 블로킹/논블로킹

YUJIN LEE·2023년 3월 26일
0

개발log

목록 보기
74/149

비동기(Asynchronous)

동시에 일어나지 않는다.

작업이 완료되는대로 결과를 넘겨줌.
요청과 결과가 동시에 일어나지 않음 -> 멀티쓰레드(Multi-thread)를 사용한 처리방식이 해당

동기(Synchronous)

동시에 일어난다.

요청이 들어오면 바로 처리를 거쳐 결과를 줌.
시간이 얼마나 걸리든 결과를 줌 -> 특정 작업이 길어지면 그만큼 시간이 걸림
-> 싱글스레드(single-thread)를 사용한 처리방식

동기와 비동기의 차이점

동기 - 설계 간단하고 직관적 but, 결과가 주어질 때까지 아무것도 못하고 대기해야하는 단점.
비동기방식 - 좀 더 복잡하지만 결과가 주어지는 시간이 길어져도 그 시간동안 다른 작업을 할 수 있어 좀 더 효율적으로 자원 사용 가능

블로킹(Blocking)

작업 중단.
네트워크 통신에서 요청이 발생하고 완료될 때까지 모든일을 중단한 상태로 대기.
블로킹 방식의 소켓통신은 결과가 올 때까지 다른작업을 중단하고 하염없이 기다리게 함.

논블로킹(Non-blocking)

중단 X
네트워크 통신이 완료될 때 까지 기다리지 않고, 다른 작업을 수행 할 수 있다. -> 효율, 반응속도 좋음.
but, 설계가 복잡함.

profile
인정받는 개발자가 되고싶습니다.

0개의 댓글