5 posts tagged with io
c++11 async, corotuine, io 스터디
오늘 스터디에서 공부한 내용을 간단히 정리해보자. async, future future, promise는 비동기로 실행되는 수행 결과를 받아오기 위한 개념이다. async는 내부적으로 promise를 사용하여 결과를 set()할 비동기 작업을 수행시키고, future를 반환한다. packaged_task는 비동기 작업을 수행할 수 있는 task 객체를 만들어준다. task 객체로부터 future를 가져올 수 있다. vs201…
IO와 메모리 복사
동기와 비동기 IO 에 대해 지난번에 이야기했었다. 비동기 IO 함수 간단히 요약하면, 함수는 완료 알림 시점 때문에 동기와 비동기로 구분된다는 것이다. 동기는 함수의 완료를 반환을 통해 알린다. 따라서 요청한 작업이 끝나기 전까지는 함수가 반환되지 않는다는 것. 덕분에 작업이 다른 작업에 의존적일 경우 흐름이 멈추는(Blocking) 경우가 많다. 비동기는 함수의 완료를 반환을 통해 알리지 않는다. Callback…
비동기 IO 함수
IO 함수라고 하면 생소하게 느끼는 경우가 많다. IO 함수는 input / output 함수의 줄임말인데 우리가 흔히 봐왔던 함수로는 scanf와 printf가 있겠다. scanf는 keyboard에서 글자를 읽어(input) 오는 것이고, printf는 문자열을 화면으로 출력(print)하는 함수다. 이 뿐만 아니라 fprintf, fscanf 등의 파일 입출력 관련의 함수 역시 io 함수들이고, 파일 관련 Windows…
다중 입출력에 대한 효율적 처리
다중 입출력 함수는 POSIX의 select 함수를 공부하면서 가장 많이 보게 되는 함수이다. 다중 입출력 함수라는 것은 영어로 바꿔보면 multiplex io function인데 말 그대로 여러 개의 io 를 하나의 함수로 처리한다는 것이다. 지난 글의 동기와 비동기에 이어서 여러 개의 io를 어떻게 처리하는 것이 효율적인지 알아보자. 비동기 IO 함수 지난 번에 봤던 함수들은 하나의 IO…
닫힌 descriptor와 write, SIGPIPE
예전에도 엄청 고생했던 것인데, socket이나 pipe 등에서 read와 write로 IO를 수행할 때 상대쪽(opposite endpoint)이 닫혔다면 어떤 현상이 벌어질까? read는 -1을 반환한다 write는 SIGPIPE를 받는다. 하지만 프로그램이 signal handler를 만들지 않았다면 그 프로그램은 죽는다. SIGTERM이나 SIGQUIT를 받은게 아니기 때문에 조용히 죽는다. send/recv…