1 / 5

쓰레드 관점에서 IO 중첩구 간

to socket B. From one thread. to socket C. t o socket D. 쓰레드 관점에서 IO 중첩구 간. Overlapped IO 의 주안점 비동기 IO + 입출력 완료결과 확인. Event 오브젝트 사용하기. Receiver WSASocket () Bind() Listen() Accept() WSARecv () == SOCKET_ERROR WSAGetLastError () == WSA_IO_PENDING WSAWaitForMultipleEvents ()

tadeo
Download Presentation

쓰레드 관점에서 IO 중첩구 간

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. to socket B From one thread to socket C to socket D 쓰레드 관점에서 IO 중첩구간 Overlapped IO의주안점 비동기IO + 입출력 완료결과 확인

  2. Event 오브젝트 사용하기 Receiver WSASocket() Bind() Listen() Accept() WSARecv() == SOCKET_ERROR WSAGetLastError() == WSA_IO_PENDING WSAWaitForMultipleEvents() WSAGetOverlappedResult() sender WSASocket() Connect() WSASend() == SOCKET_ERROR WSAGetLastError() == WSA_IO_PENDING WSAWaitForMultipleEvents() WSAGetOverlappedResult()

  3. Completion Routine 사용하기 Receiver WSASocket() Bind() Listen() Accept() WSARecv() == SOCKET_ERROR WSAGetLastError() == WSA_IO_PENDING idx = WSAWaitForMultipleEvents(~, TRUE) void CALLBACK CompRoutine() If(idx == WAIT_IO_COMPLETION) sender WSASocket() Connect() WSASend() == SOCKET_ERROR WSAGetLastError() == WSA_IO_PENDING idx = WSAWaitForMultipleEvents(~, TRUE) void CALLBACK CompRoutine() If(idx == WAIT_IO_COMPLETION)

  4. 소켓 Overlapped 구조체 2. 송수신이 끝나면 Overlapped 구조체의 Event변수 안에 event오브젝트는 signaled상태로 바뀜 3. WSAWaitForMultipleEvents함수 Overlapped 구조체의 Event변수 안에 event오브젝트가 signaled 상태가 될 때까지 기다림 1. WSARecv, WSASend함수 소켓과 Overlapped구조체의 Event변수 안에 event오브젝트 연결및 송수신시작 송신시는 보낼 정보 등록 수신시는 받은 정보 변수에 저장 4. WSAGetOverlappedResult함수 소켓과 Overlapped구조체 Overlapped 구조체의 Event변수 안에 event오브젝트를 통해 송수신된 정보를 확인

  5. OS 소켓 2. IO가 완료되었는지 확인하고 싶을 때 alertable wait 상태를 만드는 함수들 중 하나를 호출 alertable wait 상태 1. WSARecv, WSASend함수 소켓송수신시작 송신시는 보낼 정보 등록 수신시는 받은 정보 변수에 저장 OS가 소켓을 관리 3. OS가 alertablewait 상태인지 4. 완료된 IO가 있다면 이에 해당하는 Completion Routine을 OS가 호출 Completion Routine함수에서 송수신된 정보를 확인 5. Completion Routine이 실행되면 alertable wait 상태를 만드는 함수들은 모두 WAIT_IO_COMPLETION을 반환하면서 함수를 빠져 나옴

More Related