동기와 비동기의 개념에 대해 알아보자.
동기 프로그래밍을 이해할 때 '동기'라는 단어에 대해 구분이 필요하다.
프로그래밍을 할 때 동기와 데이터 영역에서의 동기는 의미가 다르다.
데이터 영역에서의 동기는 데이터가 일치하는 것을 말한다.
휴대폰에 사진 1, 사진 2 두장의 사진이 있다.
내 클라우드에 사진1만 업로드되어있으면 동기화되지 않은 상태를 말한다.
동기화되지 않았다는 것은 데이터가 일치하지 않았다는 말이다.
프로그래밍을 할 때의 동기는 일의 순서가 있다는 말이다.
* 예를 들어 학교 가기 알고리즘이 있다고 치자.
① 일어나기
② 세수, 양치하기
③ 아침밥먹기
④ 스쿨버스 타기
이 알고리즘은 ②를 먼저 할 수 없고 ①번이 끝나야 ②를 할 수 있다.
이렇게 일의 순서가 존재하는 것이 동기이다.
반대로 일의 순서가 존재하지 않는 것이 비동기 프로그래밍이다.
* 하루 일과 알고리즘이 있다.
① 빨래하고 널기
② 청소하기
③ 공부하기
세탁기가 빨래를 할 때 1시간이 걸린다.
동기 프로그램의 경우 빨래를 시작 후 끝날 때까지 아무것도 못하고 멍 때리게 된다.
비동기 프로그램의 경우 세탁기가 돌아가는 1시간 동안 ② 청소하기를 할 수 있다.
청소가 끝나고 ③ 공부를 하는 도중에 빨래가 끝나면 하고 있는 공부를 중단하고
빨래를 널고 다시 돌아와 공부를 한다.
이게 비동기 프로그래밍이다.
* 초당 10개의 처리를 하는 cpu가 있다.
① 10개 처리
② 10개 처리 후 처리한 기록 하드디스크에 저장
③ 10개 처리
①을 하는데 1초가 걸리고
②를 처리하는 동안 1초가 걸리는데 하드디스크에 저장하는 시간이 1분이 걸린다고 한다면
동기 프로그램은 cpu의 할 일은 끝났는데 하드디스크에 저장하는 동안 멍 때리게 된다.
하드디스크에 저장하는 동안 cpu가 ③을 처리하고 다른 일을 하는 게 비동기 프로그램이다.
이게 바로 비동기 프로그래밍을 써야 하는 이유이다.
cpu의 노는 시간이 줄어들어 퍼포먼스가 좋아지기 때문이다.
[출처]
https://cafe.naver.com/metacoding
메타코딩 : 네이버 카페
코린이들의 궁금증
cafe.naver.com
메타 코딩 유튜브
https://www.youtube.com/c/%EB%A9%94%ED%83%80%EC%BD%94%EB%94%A9
메타코딩
문의사항 : getinthere@naver.com 인스타그램 : https://www.instagram.com/meta4pm 깃헙 : https://github.com/codingspecialist 유료강좌 : https://www.easyupclass.com
www.youtube.com