서버에서 방 만드는 방법
글쓴이: balgarac1 / 작성시간: 수, 2015/01/07 - 1:07오전
eventselect로 서버를 짜고 있습니다. 서버 안에서 방을 구현해보고 싶은데 물어보니까 쓰레드로 만들어보라고 하더군요.
그런데 아무리 생각해봐도 좋은 수가 생각이 나지 않아서 질문을 드립니다. 유저가 접속하면 서버에서는 accept이벤트가 발생하고
이에 대한 처리로 유저 관리 자료구조에 유저를 추가하는 처리를 합니다. 그리고 나서 유저가 방에 들어가야 하는데 여기서 쓰레드가
어떤 로직을 갖고 동작하고 있어야 하는거죠?? 조언 좀 부탁드려용..ㅜㅜ
Forums:
?
방을 쓰레드로 만들라는 법은 전혀 없습니다. 방이란 것은 결국 유저 데이터에 포함되어 있는
하나의 인덱스값(int room 이라든가) 으로 처리할 수도 있는 추상적인 개념입니다.
즉 특정 패킷을 받아서 room index 를 체크하고 각 방마다 따로 클래스를 갖고 있어서
해당 클래스에 현재 그 room index 를 갖고 있는 유저 리스트를 갖고 있다고 하면
그 유저에게만 다시 패킷을 브로드캐스팅 하는 식으로 해도 됩니다.
애초에 쓰레드를 쓰고 말고는 그런 걸로 판단하는게 아니라, 동시 접속자에 대해서 몇 쓰레드로
처리를 할 것이냐로 생각하는 것이고 이건 순수히 퍼포먼스 목적입니다.
위에서 얘기한 건 소켓을 이벤트 핸들링 방식으로 처리할 때 동시에 핸들러가 몇 개 돌아가게
할 것이냐는 얘기와 같고, iocp 나 epoll 등이 그런 방식을 지원하는 것입니다.
그게 아니면 싱글 쓰레드로도 얼마든지 만들 수 있습니다.
댓글 달기