🌹 정리 by 장미(https://velog.io/@newbiekim/)

오늘은 동기와 비동기에 대해 알아 볼 건데, 시작하기에 앞서 본 글은 내가 이해한 걸 토대로 작성했기 때문에 뇌피셜이 상당히 많이 들어가 있음을 알린다.

우선 동기와 비동기의 정의를 알아 보자.

동기(Synchronous)

여러 개가 있을 때 서로 시간적인 관계가 일치해 있는 것을 표시한다.

비동기(Asynchronous)

규칙적인 시간 관계가 없는 것으로, 랜덤한 사상(事象)의 출현을 말하고, 프로그램 실행에서는 명령 순서 예측이 불가능한 것.

이렇게 정의만 보면 그게 뭔데 이놈아! 싶지만 생각보다 엄청 쉽게 정리할 수 있다.

나도 좋아하고 모두가 좋아하는 한 줄 요약으로 설명해 보자면,

동기는 스레드에게 작업을 시키고 끝날 때까지 기다렸다가 작업이 끝나면 다음 일을 진행하고,

비동기는 작업이 끝나는 걸 기다리지 않고 다음 일을 진행하는 매정한 놈이란 거다.

흔하게 쓰이는 예로 설명하자면, 동기는 카페에서 커피를 주문할 때 한 줄로 서서 한 번에 한 사람만 주문 가능한 것에 비유할 수 있다.

이 때 뒷사람은 앞사람의 커피가 나올 때까지 주문도 못 하고 그냥 가만히 서서 기다리기만 해야 한다.

…이 방식은 너무 답답하고 오래 걸려서 좀 비효율적인 것 같다.