후원 감사합니다. 커피 마시는데 보테겠습니다. ^^;;;; 자바스크립트 경우는 결국 JS engine이 어떻게 처리하는 지가 중요한데 V8기준으로 생각하면 처리 자체가 Single theading 인 것으로 알고 있습니다. (확실치는 않습니다. 오래 전 기억입니다.) 해서 비동기 처리 방식(특히 통지를 받는 부분)이 이 영상의 설명과 차이가 있을 수 있습니다. 언제 기회가 되면 현업 이야기를 공유해주시면 좋겠습니다. 감사합니다. ^^
진짜 너무너무 감사드립니다. 몇 년 째 아무리 구글 검색으로 찾아봐도 이해가 되지 않았었는데 이제 드디어 이해가 되었습니다. 찾아보니 제가 자주 쓰는 라이브러리 JDBC, AmazonS3Client 등은 Blocking I/O였어요. 이제서야 실마리가 풀리네요. 진짜 복 받으세요!!
지식공유 항상 감사드립니다. 개발자님한테 프로그래밍 공부 시작부터 많이 배웠고 지금도 많이 배우고 있습니다. 개인적으로 개발자님 채널이 지속 가능했으면 좋겠습니다. js나 파이썬같이 언어 입문영상이 아니면 조회수 나오기가 쉽지않아서...... 그래서 멤버십 전용 영상을 고려해 보는 것도 나쁘지 않을 것 같습니다.
와우! 후원 감사합니다. 다음 주 커피는 전부 CH L님이 사신 걸로~~! 제 강의가 도움이 되셨다니 뿌듯합니다. 열심히 채널 관리하고 강의 올리겠습니다. 물론 현실문제를 고민해야 하는 가장이므로 여러 생각을 하긴 해야 하지요. 좋은 의견 감사드리고 더 나은 방향을 계속 고민하겠습니다. 감사합니다. ^^
개인적으로...이 부분을 공부할 때 제일 답답했던 기억은... '아, 즉시 반환 하고 I/O가 Pending 되는구나...그런데 그래서 뭘 어쩌라는 거지?'라는 의문이었습니다. 그 설명을 찾아가다 보니 이 영상속 설명이 나왔지요. 그 이해라는 것이 참...^^;;; 좋은 평가와 피드백 감사하니다. 열공하세요~~~! ^^
에구구구...명강의는 아니고요. ^^;;; (민망 민망) IOCP와 epoll...참 오랫만에 듣는 단어네요. 사실 그렇게 어려운 개념은 아닌데...어렵다고 다들 미리 겁을 먹는 경향이 있지 않나 생각합니다. 부디 이 영상이 그런 고정관념을 깨는 일에 조금이라도 도움이 됐으면 좋겠습니다.
오 저도 질문이 있습니다. 이전 TCPIP 통신 영상 잘보았습니다. 보고나니 그럼 WebSocket 같은 경우는 어떻게 되나 궁금하네요. 제가 알기로는 tcp 연결로 3-way-handshake 후 upgrade 헤더에 WebSocket을 붙이고 연결을 유지하는 것으로 아는데 이러한 연결도 끝은 있지 않습니까? 클라나 서버에서 연결이 끊지 않고도 일정 시간이 지나면 자동으로 끊기는 그런 것도 있나요?
웹 소켓은 최초 연결 시 HTTP 통신으로 연결을 시도합니다. 일단 연결이 된 후로는 마치 패킷처럼 프레임 데이터를 양방향으로 주고 받습니다. 연결에 개념이 있으며 당연히 끝도 있습니다. 그리고 TCP의 경우 RFC에서 언급하는 세션 유지 Keep-alive 기능이 있습니다. 비슷한 논리가 적용되지 않을까 예상해봅니다.
좋은 강의 잘 들었습니다! 강의를 듣다 한가지 궁금한 점이 생겼습니다. 논블럭 i/o에서 os에 파일 입출력을 맡기고 T1은 자신의 작업을 계속 한다고 하셨는데 커널 코드는 어떤 스레드가 작동시키게 되나요? 임의의 다른 스레드 T3인지 아니면 컨텍스트 스위치로 기존의 스레드가 일을 하는지 궁금합니다!
음...이는 프로그래밍 언어 수준의 문제라기보다 구조의 문제가 아닐까 싶습니다. JVM은 마치 하드웨어가 OS가 합쳐진 미들웨어라 하겠습니다. C/C++ 계열에서도 고성능을 논할 때는 결국 OS가 일을 잘 처리하도록 유도하는 것이 핵심입니다. 그러다보면 늘상 나오는 이야기가 동기/비동기 이슈이지요. 결과적으로 User mode application은 아무리 노력해도 OS나 미들웨어가 제공하는 성능을 넘어설 방법이 없는 것이 사실이라 하겠습니다.
아주 간단하게만 말씀드리자면...Caller와 Callee간의 관계가 (흐름상)종속적이지 않고 독립적인 구조입니다. 문제는 이를 이해하기 위해서는 1. Caller/Callee 관계 및 Stack frame 구조와 지정원리 2. 멀티스레드 프로그래밍 (동기화 및 제어) 등에 대해서 이미 알고 있어야 합니다. 일반 적으로 A()가 B()를 호출하는데 B()가 다시 A()를 호출하면 무한루프에 빠지고 Stack over가 발생합니다. 그러나 함수 호출을 종속적 호출/피호출 관계가 아닌 '함수가 속한 스레드를 깨우고 내가(호출자) 속한 스레드는 잠든다'라고 생각하면 코루틴을 이해하기가 수월합니다. 간단히 강의를 만들 수 있는 주제가 아닌 것 같아 설명으로 남겨봅니다. ^^
어짜피 I/O 은 커널이 하는일이고 동기화는 커널의 대답을 기다리는 거고, 비동기화는 커널에 일시켜 놓고 다른일 하는건데 멀티 쓰레드가 아니면 딱히 입출력 시켜 놓고 뭐 할일이 있을지....하는 생각이 하하 이래서 운영체제 공부를 해야 하나 봅니다. 몇일전 부터 운영체제 강의를 보고 있는데, 딱 거기에 동기화 비동기화 설명이 나오던데 같은 주제 다시 보니 반갑네요. 아마도 운영체제를 공부하다 보면 자료구조를 다시 봐야 할것 같은데.... 쩝 감사합니다.
@@nullnull_not_eq_null 강의 덕분에 쉽게 이해할 수 있었습니다. 이전 회사에서 AWS를 사용해서 AWS 공부를 하는데 이해가 잘 안되고 어려웠습니다. 올려주신 네트워크 강의를 보니깐 이전보다 잘 이해가 되더라구요. 저도 비전공자여서 운영체제, 네트워크 같은 전공 지식들이 많이 부족하다고 느끼고 있고 열심히 공부해야 겠다는 생각이 듭니다. C언어 강의도 잘 보고 있습니다!
안녕하세요 정말 궁금했던 영상이였습니다. 질문 드려도 될까요? 파이썬으로 개발을 하고 있습니다. 1. 비동기를 자유롭게 쓸수 있는건가요? 만약에 제가 구현할수 없는 외부 라이브러리가 Blocking IO 라고 한다면 이를 비동기적으로 처리 할수 있나요? 2. Blocking IO 함수를 비동기 함수로 Wrapper(감싸고) 비동기로 호출하면 되는건가요? 모든 Blocking IO 에 가능한가요? 제약이 있을까요? 최근에 nodejs 를 봤는데 동기랑 비동기 함수가 구분이 되어 있더라구요. 그래서 안되서 비동기 함수를 만든건지. 그냥 편의를 위해서 만든건지 아시는 범위내에서 알려주시면 감사하겠습니다. 여러 유트브 영상을 봤는데 설명을 잘해주셔서 많은 도움되었습니다. 정말 감사합니다
1. 음...그런 상황이라면 저는 멀티스레드로 처리할 것 같습니다. 동기 입출력 과정 전체를 스레드로 분리 하고 완료 후 통지를 다른 스레드로 보내준다면...어차피 구조는 비동기 입출력과 같아질 수 있습니다. 2. 1번 답변에 함께 포함되는 내용으로 보입니다. 그리고 JAVA script 같은 환경에서 비동기 처리는 C/C++의 비동기와 차이가 있습니다. 이는 전적으로 JS engine이 어떻게 처리하는가에 달려있기 때문입니다. 사실 윈도우 프로그래밍 환경에서 Single threading 환경임에도 불구하고 Message 처리를 다중화 하는 방식으로 비동기를 흉내낼 수 있습니다. 그리고 죄송한 말씀을 드리자면... 제가 Python은 아주 오래 전에 한 번 써본 것이 전부고 최신 상황에 대해 정확히 알지 못합니다. 그리고 JS의 경우 약 3권의 책을 본 것이 전부라...제 답변에 대한 신뢰도는 그리 높다 말씀드리기 어렵습니다. 제가 조만간 그 둘 다 싹 다시 본 후 더 정확한 답변을 만들어 올리겠습니다. 다만, 애석하게도 시간이 좀 걸릴 것 같습니다. 감사합니다. ^^
비동기 작업이 필요한 대표적인 예가 파일 I/O 처리인데. 이게 참 골때립니다. 상태를 계속 모니터랑 하며 메인 부모 프로그램에 전달 해야하는데 참 고려할게 많습니다. 파일 업로드 후에 후속 처리 하는건 그냥 동기 프로그램이 편함. 순서가 중요한 프로그램은 동기. 순서가 중요하지 않는 프로그램은 비동기로 작업하는게 맞지만 상태 모니터링은 해서 결과는 체크해서 알려줘야함. 비동기 처리 남발하는 프로그램이 프로그램 신뢰성이 떨어지는게 상태 체크를 잘 못해서 그래요. 비동기 I/O에 상태 체크와 콜백처리는 필수. 데이터 동기화 관점에서 봐도 비동기 I/O 처리는 위험하고. 프로그램 로직 분리 잘해야함. 비동기 I/O가 다른 프로그램 로직에 영향 안가게. 요즘에 비동기 I/O랑 조합해서 쓰기 좋은게 반응형 프로그래밍이나 함수 반응형 프로그래밍이고. 데이터 중심으로 생각하기
자바스크립트 주력 개발자인데 막상 질문들어오면 짧게는 답이 안되는 키워드들인것 같습니다. 명쾌하게 정리해주셔서 감사합니다.
후원 감사합니다. 커피 마시는데 보테겠습니다. ^^;;;;
자바스크립트 경우는 결국 JS engine이 어떻게 처리하는 지가 중요한데 V8기준으로 생각하면 처리 자체가 Single theading 인 것으로 알고 있습니다. (확실치는 않습니다. 오래 전 기억입니다.) 해서 비동기 처리 방식(특히 통지를 받는 부분)이 이 영상의 설명과 차이가 있을 수 있습니다.
언제 기회가 되면 현업 이야기를 공유해주시면 좋겠습니다. 감사합니다. ^^
진짜 너무너무 감사드립니다. 몇 년 째 아무리 구글 검색으로 찾아봐도 이해가 되지 않았었는데 이제 드디어 이해가 되었습니다. 찾아보니 제가 자주 쓰는 라이브러리 JDBC, AmazonS3Client 등은 Blocking I/O였어요. 이제서야 실마리가 풀리네요. 진짜 복 받으세요!!
이해가 되셨다니 다행이네요. 앞으로 개발자로써 큰 성장을 응원합니다. ^^
지식공유 항상 감사드립니다.
개발자님한테 프로그래밍 공부 시작부터 많이 배웠고 지금도 많이 배우고 있습니다.
개인적으로 개발자님 채널이 지속 가능했으면 좋겠습니다. js나 파이썬같이 언어 입문영상이 아니면 조회수 나오기가 쉽지않아서......
그래서 멤버십 전용 영상을 고려해 보는 것도 나쁘지 않을 것 같습니다.
와우! 후원 감사합니다. 다음 주 커피는 전부 CH L님이 사신 걸로~~!
제 강의가 도움이 되셨다니 뿌듯합니다.
열심히 채널 관리하고 강의 올리겠습니다. 물론 현실문제를 고민해야 하는 가장이므로 여러 생각을 하긴 해야 하지요.
좋은 의견 감사드리고 더 나은 방향을 계속 고민하겠습니다. 감사합니다. ^^
보통 블록킹 논블록킹하면 단순 코드로만 설명해서 기다린다 기다리지 않는다로만 나오는데 이렇게 로우레벨로 알려주시니까 더 좋네요!!
개인적으로...이 부분을 공부할 때 제일 답답했던 기억은...
'아, 즉시 반환 하고 I/O가 Pending 되는구나...그런데 그래서 뭘 어쩌라는 거지?'라는 의문이었습니다. 그 설명을 찾아가다 보니 이 영상속 설명이 나왔지요. 그 이해라는 것이 참...^^;;;
좋은 평가와 피드백 감사하니다. 열공하세요~~~! ^^
1년차 비전공자 주니어에요
좋은 강의들 정말정말 감사합니다
주변에 잔뜩 홍보하고있어요!
후원까지~~~! 감사합니다. ^^
제 채널의 목표는 대한민국 모든 개발자의 전공자화 입니다!!
일하다가 궁금한 점 생기면 질문 올려주세요. 제가 아는 범위에서 다 알려드리겠습니다. 모르면...공부를 해서라도...^^;;;;
멋진 커리어 쌓아 나가시기 바랍니다. ^^
혹시 강의 중간 6:39 에 실제로는 2차저장장치에 접근하지 않을 수도 있다고 하신 말씀이 데이터가 캐시 혹은 메모리에 올라와 있는 경우를 말씀하시는 건가요?
네, 맞습니다. 자주 참조되는 데이터에 대해 OS수준에서 미리 캐시되어 있는 경우가 많습니다. 소프트웨어로 하드웨어적 성능향상을 체감 할 수 있지요. :)
감사합니다.
헉! 후원까지! 감사합니다. ^^
@@nullnull_not_eq_null 진짜 진짜 공부하고 싶은 강의만 올려주시네요. Blocking IO, Multithreaing 강의까지 감사합니다!
댓글을 안 달수가 없네요! 커피 얘기하시는 부분에서 너무 인간미?가 느껴집니다! 좋은 강의와 그 이상의 것을 보여주시는 것 같아 너무 좋네요 :) 곧 구독자 수 2만이 넘을거 같은데 미리 축하드립니다! ㅎㅎ
뭐, 염치죠. 후원도 해주시는데...감사인사는 해야지 생각합니다. ^^;;;;
좋은 평가 감사드립니다. 앞으로도 계속 강의 열심히 만들어 올리겠습니다.
선생님 강의를 볼때마다 이해했다고 생각했는데, 볼때마다 아 저번에 이해한거는 이해한게 아니구나라고 느낍니다. 좋은 강의 올려주셔서 감사합니다.
구체적인 피드백 감사합니다. 이해와 암기의 차이가 무엇인지 헷갈릴 때가 있습니다. 저는 지금도 그렇긴 합니다. ^^;;
아무튼 이해에 조금 더 가까워지는 것은 관련 코드를 직접 개발해보는 것이 가장 좋습니다. 잘 되실 겁니다. ^^
명강의 감사합니다. iocp와 epoll을 정확히 이해하는 개발자가 요즘은 드물어요. async/await을 지원하는 언어가 늘어난건 좋은데 원리를 모르고 쓰는 경우가 너무 많더라고요.
에구구구...명강의는 아니고요. ^^;;; (민망 민망)
IOCP와 epoll...참 오랫만에 듣는 단어네요. 사실 그렇게 어려운 개념은 아닌데...어렵다고 다들 미리 겁을 먹는 경향이 있지 않나 생각합니다. 부디 이 영상이 그런 고정관념을 깨는 일에 조금이라도 도움이 됐으면 좋겠습니다.
동기 비동기에 대한 이해는 됐는데 동기 비동기에 대한 설명만 해주시고 블로킹 논블로킹른 결국 초반에 블로킹은 결국 싱크로노스다 이후로 언급이 없어 아쉽네요 ㅜㅜ
음...그 한 문장으로 사실 상 설명이 됐다고 판단하고 있습니다. 비동기 입/출력이 가능하려면 Non-blocking I/O를 지원하는 환경이어야 한다는 말로도 설명이 가능하겠습니다. 참고하시기 바랍니다. :)
실제 비동기 사용하면서 로우레벨은 생각할 일이 없었는데 로우레벨까지 자세히 설명해 주시니 되게 재밌었습니다.
로우 레벨 개발 할 것이 아니라면...개념적으로 이해하는 것으로도 충분하지 않나 생각합니다. 열공하세요~~~! ^^
너무 감사합니다 제일 명쾌상쾌한 설명이었어요 !!!
좋게 봐주셔서 고맙습니다. :)
아 진짜 보물같은 채널ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 공부 열심히 하겠습니다!!! 영상 다 볼게요!!!!!!!
좋은 평가 감사합니다. 영상들이 도움이 되면 좋겠습니다. 열공하세요~~! ^^
유익한 강의 감사합니다. 자주 들리겠습니다.
좋은 평가 감사합니다. 열공하시고 자주 뵙는 걸로~~~! ^^
좋은강의 감사합니다
그런데 논블로킹 블로킹은 단순 동기 비동기 개념으로 이해하기보다는 쓰레드 라이프사이클 중심의 해석이 실전에서는 더 중요하더라구요
블로킹한 비동기 개발을 하고 논블로킹하게 만들었다는 착각을 많이 하고 봐서...
좋은 의견 감사합니다. 그렇게 해석하는 것도 당연합니다. 결국 멀티 스레드 환경이 아니라면 동기/비동기 자체가 아무런 의미를 갖지 못하게 되는 경우도 많으니까요. 물론 멀티플랙싱 개념을 합치면 이야기가 또 달라질 수 있겠지만요. ^^
들으면서 속으로 sleep 생각했는데. 딱 나오네요
하하하하...^0^
뭐, 아는 사람은 다 알지 않겠습니까? 무엇보다 자신이 초보 시절 한 번쯤 했을 법한 대응이기도 하고요. ^^;;
운영체제에 대한 이해가 없으면 절대 이해할 수 없는 개념이었네요...ㅠ 감사합니다..!
네, 맞습니다. OS에 대한 지식은 여러모로 중요하지요. 고맙습니다. :)
H/W Firmware 할 때 정말 중요 하죠~!
감사합니다.
개인적으로 펌웨어 만질 일이 없어서...-_-;;; 그런데 생각해보면 거기서도 중요하긴 하겠네요. 정보 감사합니다. ^^
제가 조금 더 공부해야할 것 같아요. 그래도 전반적으로 제가 생각했던 것과 강사님의 설명이 흡사해서 다행이라고 생각합니다.
저도 커널 코드 다 뜯어보고 하는 이야기는 아닙니다. 그저 배워서 아는 것을 근거로 설명한 것이지요. 더 공부할 부분이 무엇이라 생각하는지 알려주시면 보충해보도록 하겠습니다. ^^
이 주제에 대해서 인터넷 돌아다니면서 이내용 찾다가 여러내용 조각모음해서 이해한 내용이 이 내용아었는데 제가 이해한 내용이 대부분 맞아서 다행이네요.. ㅎ
피드백 감사합니다. 더 자세한 이야기들이 필요하긴 한데...아마도 운영체제 수업에서 다루게 될 것 같습니다. 감사합니다. ^^
오 저도 질문이 있습니다.
이전 TCPIP 통신 영상 잘보았습니다. 보고나니 그럼 WebSocket 같은 경우는 어떻게 되나 궁금하네요.
제가 알기로는 tcp 연결로 3-way-handshake 후 upgrade 헤더에 WebSocket을 붙이고 연결을 유지하는 것으로 아는데
이러한 연결도 끝은 있지 않습니까? 클라나 서버에서 연결이 끊지 않고도 일정 시간이 지나면 자동으로 끊기는 그런 것도 있나요?
웹 소켓은 최초 연결 시 HTTP 통신으로 연결을 시도합니다. 일단 연결이 된 후로는 마치 패킷처럼 프레임 데이터를 양방향으로 주고 받습니다. 연결에 개념이 있으며 당연히 끝도 있습니다. 그리고 TCP의 경우 RFC에서 언급하는 세션 유지 Keep-alive 기능이 있습니다. 비슷한 논리가 적용되지 않을까 예상해봅니다.
좋은 강의 잘 들었습니다! 강의를 듣다 한가지 궁금한 점이 생겼습니다. 논블럭 i/o에서 os에 파일 입출력을 맡기고 T1은 자신의 작업을 계속 한다고 하셨는데 커널 코드는 어떤 스레드가 작동시키게 되나요? 임의의 다른 스레드 T3인지 아니면 컨텍스트 스위치로 기존의 스레드가 일을 하는지 궁금합니다!
커널 자체도 하나의 프로그램입니다. 그 속에 커널 스레드가 존재합니다. 운영체제 자체도 하나의 프로그램입니다. 내가 실행하는 것은 아니고 자동으로 실행되지요. 참고하시기 바랍니다.
오 관련 영상을 모두 찾아보진 않았는데 c, c++은 동기, 비동기 io가 더 중요하다고 하신게 java같은 경우는 jvm위에서 돌아가기 때문인가요?
음...이는 프로그래밍 언어 수준의 문제라기보다 구조의 문제가 아닐까 싶습니다. JVM은 마치 하드웨어가 OS가 합쳐진 미들웨어라 하겠습니다. C/C++ 계열에서도 고성능을 논할 때는 결국 OS가 일을 잘 처리하도록 유도하는 것이 핵심입니다. 그러다보면 늘상 나오는 이야기가 동기/비동기 이슈이지요. 결과적으로 User mode application은 아무리 노력해도 OS나 미들웨어가 제공하는 성능을 넘어설 방법이 없는 것이 사실이라 하겠습니다.
Spring, Java만 하다가 개발자의 기본지식이 많이 부족했는데 배워갑니다. 구독과 좋아요 하고 가용
진짜 중요한건데 코어개발자가 아니면 손 못대는 영역이기도 하죠.. 아니 소스에 접근도 못하는... ㅎㅎ 막상 이해는 대충 해도 처음부터 짜라고 하면 못짤 그런.. 영역인듯해요
안녕하세요 요즘 코루틴에 대해서 공부중인데 스택리스 코루틴/스택풀 코루틴에 대한 내용이 너무 어렵고 블로그들도 비슷한 내용만 적혀있어서 어려움을 격고 있습니다 혹시 해당 내용도 강의 부탁드려도 될까요?
아주 간단하게만 말씀드리자면...Caller와 Callee간의 관계가 (흐름상)종속적이지 않고 독립적인 구조입니다. 문제는 이를 이해하기 위해서는
1. Caller/Callee 관계 및 Stack frame 구조와 지정원리
2. 멀티스레드 프로그래밍 (동기화 및 제어)
등에 대해서 이미 알고 있어야 합니다.
일반 적으로 A()가 B()를 호출하는데 B()가 다시 A()를 호출하면 무한루프에 빠지고 Stack over가 발생합니다.
그러나 함수 호출을 종속적 호출/피호출 관계가 아닌 '함수가 속한 스레드를 깨우고 내가(호출자) 속한 스레드는 잠든다'라고 생각하면 코루틴을 이해하기가 수월합니다.
간단히 강의를 만들 수 있는 주제가 아닌 것 같아 설명으로 남겨봅니다. ^^
명강의 감사드립니다. 동기 비동기 블록킹 논블록킹 4가지 케이스에 대한 예제코드가 있을까요??
좋은 평가 감사합니다. 현재 예제는 없습니다. 아마도 앞으로 운영체제 강의에서 일부 다루기는 할 것 같습니다. 참고하시기 바랍니다.
답변감사합니다!
요새 집 오면 더블모니터로 선생님 강의 틀어놓고 생활하네요 ㅎㅎ
아...그러시군요. ^^;;; 잘 때 틀어두시면...잠도 잘 오지 싶습니다. ^^;;;;
프로그래밍을 제대로 하기 위해서는 꼭 이해해야하는 개념이네요. 이번 강의도 재미있게 잘 들었습니다. 감사합니다.
네, 꼭 이해해야 합니다. 이 정도만 알아도 나중에는 큰 차이가 납니다. 열공하세요. ^^
어짜피 I/O 은 커널이 하는일이고
동기화는 커널의 대답을 기다리는 거고,
비동기화는 커널에 일시켜 놓고 다른일 하는건데
멀티 쓰레드가 아니면 딱히 입출력 시켜 놓고 뭐 할일이 있을지....하는 생각이 하하
이래서 운영체제 공부를 해야 하나 봅니다.
몇일전 부터 운영체제 강의를 보고 있는데, 딱 거기에 동기화 비동기화 설명이 나오던데
같은 주제 다시 보니 반갑네요.
아마도 운영체제를 공부하다 보면 자료구조를 다시 봐야 할것 같은데....
쩝
감사합니다.
자료구조 어느 정도 아셔야 운영체제 공부도 잘 할 수 있습니다. 음...이미 어느 정도 알고 계신 것 같은데요. 궁금한 점은 질문 올려주세요. 영상으로 제작 하겠습니다. ^^
대표님 도커는 해주셨는데 쿠버네티스가 없어서 아쉽습니다 ㅎㅎㅎ! 대표님이 설명해주시는 쿠베 아키텍처 듣고 싶어요~~
뭐, 원하신다면 쿠버네티스 공부 좀 해보겠습니다. 아직 공부 전 입니다만....
도커 만큼 끌리는 느낌은 없네요. ^^;;;;
널널할개발자님
동기=blocking
비동기=non-blocking 이거 아닌가요?
서로 진짜 차이가 어떻게 되죠? 제가 찾아보니까 caller에 따라 다르다 관점에 다르다 이러는데 데체 무슨말이죠?
네, 맞습니다. :) 그리고 이 영상이 질문하신 것에 대한 답변에 해당합니다. 더 쉽게 설명을 해야 할 것 같네요.
C++이 주언어인데 이번강의도 너무 팩트로 후들겨맞앗군요ㅠ 더욱 정진하겠습니다
앗...??? 저 때린 적은 없습니닷~~! ^^;;;; 좋은 피드백 주신 것으로 이해하겠습니다. 감사합니다. ^^
와우!!! 아직 시청 전이지만 제가 헷갈려했던(?) 주제네요
보고나서 이해가 됐는지 '꼭' 알려주세요. ^^
@@nullnull_not_eq_null 이해하였습니다.
궁금한게 비동기는 2개이상의 스레드가 꼭 필요한건가요?
네, 그렇게 구성하지 않으면 굳이 비동기 처리할 이유가 없습니다. ^^
감사합니다. 자동 푸시 기능 개발중 동기 비동기 개념 헷갈려서 개념보러왔습니다 ㅎㅎ
아하~~~! 관련된 내용을 수행하고 계시는 군요. 건투를 빕니다! ^^
감사합니다
저도 감사합니다. 열공하세요~~~!
올해첫 더블 매우네요ㄷㄷ 감사합니다
첫 더블?? 어떤 의미 일까요?? (정말 몰라서...-_-;;;;)
뭐, 좋은 평가 하신 것으로 이해하고 감사합니다. ^^;;;
@@nullnull_not_eq_null 아아 영상 썸네일에 '매우' 단어가 두개있어서요...
@@mastersecret-j9x 아~~~! 그렇군요. ^^
질문에 대한 강의를 빠르게 올려주셔서 정말 감사합니다. 강의 듣고 나니 역시 기초가 중요하다는 것을 다시 한번 깨닫게 되네요. 계속해서 열공 하겠습니다!
이해가 좀 되셨나 모르겠네요. ^^
이 영상에서 알고 있다고 가정하는 부분들은 채널 내부에 모두 영상이 있습니다. 참고하셔서 꼭 자기 지식으로 만드시기 바랍니다. 정말 정말 중요한 것을 질문하셨거든요. ^^
@@nullnull_not_eq_null 강의 덕분에 쉽게 이해할 수 있었습니다. 이전 회사에서 AWS를 사용해서 AWS 공부를 하는데 이해가 잘 안되고 어려웠습니다. 올려주신 네트워크 강의를 보니깐 이전보다 잘 이해가 되더라구요. 저도 비전공자여서 운영체제, 네트워크 같은 전공 지식들이 많이 부족하다고 느끼고 있고 열심히 공부해야 겠다는 생각이 듭니다. C언어 강의도 잘 보고 있습니다!
도움이 되셨다니 다행이네요. 열공하셔서 훌륭한 결과 얻으시기를 응원하겠습니다. ^^
iocp랑 epoll 둘다 지원하는 네트웤 데몬 프레임워크 개발할때가 떠오르네요; 여기서 반전은 사실 동시접속도 별로 없고 윈도쪽만 개발 해도 되는 프로젝트였는데 완전 오버엔지니어링 이었죠 ㅎ;;;
그래도 그런 프레임워크 하나 잘 만들어 두면 공부도 되고...후임들 가르치기도 좋고...무엇보다 '있어'보이죠. ^^;;; 우리 팀장님 짱~!!! ^^;;;;;;;
@@nullnull_not_eq_null ㅎㅎ; 요즘은 그런거 파고있을 이유도없고 사실 당시도 boost asio쓰면 훨 쉽게 할수있었는데 월급받으면서 호기심 해결하는 수준 이었죠 ㅎㅎ;;;
요즘은 비동기 문제 같은 것을 신경쓰지 않는 세상인 것 같긴 합니다. ^^
안녕하세요 정말 궁금했던 영상이였습니다.
질문 드려도 될까요?
파이썬으로 개발을 하고 있습니다.
1. 비동기를 자유롭게 쓸수 있는건가요?
만약에 제가 구현할수 없는 외부 라이브러리가 Blocking IO 라고 한다면
이를 비동기적으로 처리 할수 있나요?
2. Blocking IO 함수를 비동기 함수로 Wrapper(감싸고) 비동기로 호출하면 되는건가요?
모든 Blocking IO 에 가능한가요? 제약이 있을까요?
최근에 nodejs 를 봤는데 동기랑 비동기 함수가 구분이 되어 있더라구요.
그래서 안되서 비동기 함수를 만든건지. 그냥 편의를 위해서 만든건지 아시는 범위내에서 알려주시면 감사하겠습니다.
여러 유트브 영상을 봤는데 설명을 잘해주셔서 많은 도움되었습니다.
정말 감사합니다
1. 음...그런 상황이라면 저는 멀티스레드로 처리할 것 같습니다. 동기 입출력 과정 전체를 스레드로 분리 하고 완료 후 통지를 다른 스레드로 보내준다면...어차피 구조는 비동기 입출력과 같아질 수 있습니다.
2. 1번 답변에 함께 포함되는 내용으로 보입니다.
그리고 JAVA script 같은 환경에서 비동기 처리는 C/C++의 비동기와 차이가 있습니다. 이는 전적으로 JS engine이 어떻게 처리하는가에 달려있기 때문입니다. 사실 윈도우 프로그래밍 환경에서 Single threading 환경임에도 불구하고 Message 처리를 다중화 하는 방식으로 비동기를 흉내낼 수 있습니다.
그리고 죄송한 말씀을 드리자면...
제가 Python은 아주 오래 전에 한 번 써본 것이 전부고 최신 상황에 대해 정확히 알지 못합니다. 그리고 JS의 경우 약 3권의 책을 본 것이 전부라...제 답변에 대한 신뢰도는 그리 높다 말씀드리기 어렵습니다.
제가 조만간 그 둘 다 싹 다시 본 후 더 정확한 답변을 만들어 올리겠습니다. 다만, 애석하게도 시간이 좀 걸릴 것 같습니다. 감사합니다. ^^
@@nullnull_not_eq_null 답변감사합니다!! TCP/IP 등 정말 유익한 영상 많이 있더군요. 비동기 관련해서는 영상참고하여 공부해보겠습니다. 감사합니다
네...열공하시고 언제든 질문 올려주세요. ^^
비동기 작업이 필요한 대표적인 예가 파일 I/O 처리인데. 이게 참 골때립니다. 상태를 계속 모니터랑 하며 메인 부모 프로그램에 전달 해야하는데 참 고려할게 많습니다. 파일 업로드 후에 후속 처리 하는건 그냥 동기 프로그램이 편함. 순서가 중요한 프로그램은 동기. 순서가 중요하지 않는 프로그램은 비동기로 작업하는게 맞지만 상태 모니터링은 해서 결과는 체크해서 알려줘야함. 비동기 처리 남발하는 프로그램이 프로그램 신뢰성이 떨어지는게 상태 체크를 잘 못해서 그래요. 비동기 I/O에 상태 체크와 콜백처리는 필수. 데이터 동기화 관점에서 봐도 비동기 I/O 처리는 위험하고. 프로그램 로직 분리 잘해야함. 비동기 I/O가 다른 프로그램 로직에 영향 안가게. 요즘에 비동기 I/O랑 조합해서 쓰기 좋은게 반응형 프로그래밍이나 함수 반응형 프로그래밍이고. 데이터 중심으로 생각하기
좋은 의견 감사합니다. 관련해 경험이 많으신 것 같습니다. 사실 극단적으로 성능을 요구하는 상황이 아니라면 동기처리가 좋긴 하지요. ^^