반응형

소켓 2

소켓 입출력 모델 - Completion Port [IOCP] 모델

* 입출력 완료 포트(I/O completion port)- 비동기 입출력 결과와 이 결과를 처리할 스레드에 대한 정보를 담고 있는 구조로 Overlapped 모델(II)에서 나오는 APC 큐와 비슷한 개념 * 입출력 완료 포트 vs. APC 큐의 차이점- 생성과 파괴 APC 큐는 각 스레드마다 자동으로 생성되고 파괴. 입출력 완료 포트는 CreateIoCompletionPort() 함수로 생성하고 CloseHandle() 함수를 호출하여 파괴한다.- 접근 제약 APC 큐에 저장된 결과는 APC 큐를 소유한 스레드만 확인할 수 있지만 입출력 완료 포트에는 이러한 제약이 없다. 대게 입출력 완료 포트를 접근하는 작업 스레드를 별도로 도는데 이상적인 작업자 스레드 개수는 CPU 개수와 같게 하지만 몇가지 이..

Program/C & C++ 2012.09.19

TCP_NODELAY 적용

socket 을 이용하여 통신을 하는데, 반응 속도가 느리다면 tcp_nodelay 옵션을 사용해보는 것도 좋은 방법일 수 있습니다.tcp socket 의 경우, 기본적으로 Nagle 알고리즘을 사용합니다. Nagle 알고리즘은 전송의 효율을 위해, 적은 데이터를 모아서 큰 패킷으로 한번에 보내는 방식입니다. 따라서 이경우 적은 양의 데이터가 자주 발생되는 시스템에서는 반응속도가 느려질 수 있습니다. 이를 해결하기 위해 socket.setTcpNoDelay(true) 를 해주면 Nagle 알고리즘이 해제되면서, 패킷이 준비되면 바로 보내게 됩니다.setTcpNoDelaypublic void setTcpNoDelay(boolean on)                   throws SocketExcepti..

반응형