2 min read

비동기..? 동기, 블록, 논블록 도대체 뭔대!

최근 한 후배가 나에게 비동기 블록킹 이런식으로 이야기를 많이 해주었는데 이 위에 있는 차트를 보고 그런식으로 말했다고 한다.

위그림은 잘못된 지식으로 만들어졌고 이로 인해서 공부하는분조차 블록킹 논블록킹 동기를 헤갈리게 만든다.

어째서 select가 비동기에 블록이라는건가. 이는 비동기를 매우 매우 잘못알고 있는 뜻이라는 것이다. msdn이나 linux조차도 동기라고 문서에 적혀있다.


https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-select
https://man7.org/linux/man-pages/man2/select.2.html

도대체 그럼 블록,논블록가 무엇이고 비동기,동기는 무엇인가? 라고 물어보시는 분도 있을것이다.

이에 대해 IO의 관계와 상황이라고 나누어진다고 말 할수 있다.

블록킹/논블록킹은 IO하고의 관계가 꼭 기달릴 필요성이 있는지 아닌지에 대한 관계이다.

동기/비동기 : X->Y가 작업이 선행일 필요가 있는지 선행필요성이 없으면 비동기라고 본다. 일단 작업이 요청된후 누가 완료될지모르기 때문이다. 이에 상황이라고 볼수있다.