(소켓프로그래밍) 클라이언트가 접속할 때마다 스레드를 추가한다면...
글쓴이: qkrtntjd / 작성시간: 수, 2015/06/03 - 1:18오전
다중 접속이 가능하도록 하기위해서 클라이언트가 접속할 때마다 스레드를 추가하여 배열로 관리한다고 한다면.. 보통 얼마까지의 클라이언트 스레드까지 서버에서 보장해줄 수 있나요?
이런 방법으로는 결국 mmorpg같은건 구현이 불가능하지 싶어서요..
그렇다면 클라이언트가 접속할 때마다 스레드를 추가하지 않고 메인 스레드 하나에서 클라이언트 접속을 받는다면 더 많은 클라이언트를 받을 수 있는건가요?
저는 다중접속인 경우게 클라이언트마다 스레드를 추가해야한다고 배웠는데 그게 아닐 수도 있다는 말을 들어서 한번 여쭤봅니다
Forums:
?
멀티플렉싱 모델로 단일 쓰레드에서 다수의 클라이언트 처리를 할 수 있습니다.
대표적으로 표준 BSD 모델인 select 가 있습니다.
기본적으로 이벤트 드리븐 개념에 대해서 생각해보신다면 어떻게든 가능하다는 것을 알 수 있습니다.
물론 각 소켓에 대해 I/O 가 발생했을 때 알아야 하니 커널의 도움이 필요합니다.
epoll 도 사실상 유사한 개념에 기반을 두고 있고, IOCP 역시 마찬가지입니다.
여기서 멀티쓰레딩까지 합칠 수 있는 것은, 이벤트 핸들러가 한 번에 몇 개가 동시에 동작할 수 있느냐는 것입니다.
IOCP 의 경우 OS 가 Worker thread 를 어느 정도 관리해줍니다.(n개 만들면 알아서 깨우고 동작하거나 하는 식)
메모리 한도까지는 가능하죠. 대신 cpu core x
메모리 한도까지는 가능하죠. 대신 cpu core x 2 이상은 그 효율이 떨어질 수 있습니다.
---------
간디가 말한 우리를 파괴시키는 7가지 요소
첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스
이익추구를 위해서라면..
다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치
댓글 달기