저번에 동기, 비동기에 대해서 알아보았자나요!! 그런데 요것들을 공부하다보면 나오는 항상 셋뚜처럼 보이는 블럭과 논블럭!
그리고 저번 설명에 나왔던 이미지에도 잠깐 출연했었는데 요 친구 발견한 사람~? ㅎ.ㅎ

이벤트 루프도 너무 너무 너무 중요하지만! 이 두 가지 개념은 네트워킹이나 입출력(IO) 작업에서 주로 사용되어 개념들을 함께 이해하면 프로그램의 흐름과 성능을 더 원활하게 이해할 수 있답니다.
그래숴! 동기, 비동기와 함께 반드시 알고 가야하는 블럭/논블럭! 뽀개러 가보자고! 아자아자아자! 😀😀😀
동기, 비동기 한 줄 복습
요청 작업에 대해 완료 여부를 따져 순차대로 처리한다.
요청 작업에 대해 완료 여부를 따지지 않고 다음 작업을 그대로 수행한다.
블럭과 논블럭

블럭과 논블럭은 쉽게 말해 현재의 작업의 중단 유무를 나타내는 프로세스의 실행 방식을 말한다. 누군가 블럭과 논블럭의 차이점을 이야기 해보세요! 라고 말한다면 작업 호출 방식과 제어권이라고 말하면 더 이해가 쉬워질 것이다 :) 그리고 글보다는 아래 그림을 살펴보고 글을 읽어보니 더 이해가 쉬웠다...🫢
1. A 함수가 B 함수를 호출
2. B 함수에게 제어권 넘어감
3. B 함수 실행, A 함수 실행 중단
4. B 함수 완료, A 함수에게 제어권 돌려줌
5. 제어권을 돌려받은 A 함수는 다시 함수 실행
A 함수 호출 시 B 함수 호출 후 B 함수 완료까지 기다렸다가 A 함수 실행을 마저 실행한다.
블로킹 방식은 함수 호출이 완료될 때까지 호출한 함수의 제어권을 유지한다.
1. A 함수가 B 함수를 호출
2. A 함수가 제어권을 유지한 상태로 B 함수 실행
3. A 함수, B 함수 각자 함수 실행 진행
A 함수 호출 시 B 함수 호출 후 계속해서 A는 제어권을 가지고 작업을 진행한다.
논블로킹 방식은 함수가 바로 제어권을 반환하며 대부분 비동기 방식으로 동작합니다.
💁♀️ 그러면 동기, 비동기, 블럭, 논블럭을 섞으면 어떻게 된다는 이야기야...? 도대체...?
동기/비동기/블럭/논블럭 냅따 섞기

동기, 비동기, 블럭, 논블럭 공부하면 한번씩 꼭 보는 이미지이죠? ㅎㅎㅎ
하지만 저는 요 이미지를 보아도 이해가 되지 않더라구요 ㅠㅠ
냅따 섞기 이해를 위해 수많은 예들을 살펴보며 힘들어했던 나날들...
하지만 이 분의 케이스 스터디를 보며 얼추 이해를 해버리고만 나 🥲🥲🥲🥲🥲
수많은 블로그글 중에 가장 이해하기 좋았던 케이스 스터디 예시를 소개합니다!!!
원본글 : https://musma.github.io/2019/04/17/blocking-and-synchronous.html
(정말 감사합니다 ㅠㅠ)

케이스 스터디 곱씹기

동기와 비동기, 블럭, 논블럭까지 열심히 구글링을..해보았는데요 ^^ 깔꼼하게 정리가 되었을지 모르겠는고에요 :)
다음에는 저번에 다루었던 비동기 처리를 만들어주는 이벤트 루프에 대해 찾아보고 정리해보는 시간을 가져보겠슴미다 ㅎ.ㅎ
끝!
✅ 참고
https://musma.github.io/2019/04/17/blocking-and-synchronous.html
https://inpa.tistory.com/entry/%F0%9F%91%A9%E2%80%8D%F0%9F%92%BB-%EB%8F%99%EA%B8%B0%EB%B9%84%EB%8F%99%EA%B8%B0-%EB%B8%94%EB%A1%9C%ED%82%B9%EB%85%BC%EB%B8%94%EB%A1%9C%ED%82%B9-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC