C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[69101] Re:Re:Re:DB를 큐에 넣어서 처리하는 방법에 대해..
Lyn [tohnokanna] 1533 읽음    2013-02-05 19:42
전 유저마다 고유한 Key 값을 할당하고, 룸내의 리스트에는 그 Key만을 저장합니다.
커넥션 객체를 가져오는것은 전체 유저 리스트에만 의존하구요(map을 쓰니 속도도 빠릅니다. 전체검색이 아니니까)
Indy라면 기본 리스트 대신 검색용으로 Key-객체 연관컨테이너를 하나 준비합니다. Disconnect 시에 하나 더 빼주는 작업을 해주는거죠

커넥션 객체를 여기저기에다 저장해 두는것은, Disconnect 시에 여기저기 다 찾아다니면서 리스트에서 빼야한다는거고
이방법은 속도 이전에 실수가 발생 할 가능성이 높아서 저는 그다지 애용하지 않습니다.
그나마 로비-룸 정도의 단순한 2단계 구조라면 할만하지만 5~6단계 이상이 되어버리면 제대로 골때립니다


용맨소녀 님이 쓰신 글 :
: 보낼때마다 LockList로 전체 유저 리스트를 구해와서 전송처리할 유저를 일일이 대조해서 보내야한다는건가요?
:
: 일단 그러면 확실히 처리가 되겠네요.. 근데, 위의 방법대로 하려면 수천명이 접속했을때 비교시간이 많이 걸릴것 같아서요..
:
: 근데, 저의 경우는 룸 클레스 안에 리스트를 하나 만들어서 입장한 유저들을 넣어놓는데요.. DB에서 데이터를 긁어와서 리스트에 있는 유저에게 바로 전송하려고 하는데,  이 방법은 좋은 방법이 아닌가요?
:
: 이렇게 하려면 LockList와는 다른 방법을 써야할 것 같은데요.. 이것때문에 좀 골치아픕니다..
:
:
: Lyn 님이 쓰신 글 :
: : DB 작업 다 끝나고 전송시작할때 UserList에 Lock 걸면 됩니다.
: :
: : 그때 나가고 없는 유저한텐 전송 안하는거구요 ...
: :
: : 용맨소녀 님이 쓰신 글 :
: : : 개념은 이해가 가는데요.. 실력이 허접해서 그런지 구현하려는데 얄랑꼬리한 부분이 있네요..
: : :
: : : 단순히 DB에 기록만 한다면 구현이 쉬울거 같은데요..
: : :
: : : DB에서 자료를 읽어 들인 다음에 이걸 방에 있는 유저들에게 전송하려고 한다면, 어떤 식으로 구현해야 할까요?
: : :
: : : 전송해야할 유저들 클레스까지 묶어서 큐에 넣어야 할까요?
: : :
: : : 이러면 비동기적인 처리가 될 것 같은데, DB를 처리하는 동안 유저가 접속을 끊는다거나 방을 나갈 경우를 대비해서 크리티컬 섹션을 걸고.. 그런 식으로 구현해야 할까요?
: : :
: : : DB처리 부분에서 걸면 전반적인 속도가 느려질 것 같은데요..

+ -

관련 글 리스트
69097 DB를 큐에 넣어서 처리하는 방법에 대해.. 용맨소녀 1713 2013/02/05
69099     Re:DB를 큐에 넣어서 처리하는 방법에 대해.. Lyn 1533 2013/02/05
69100         Re:Re:DB를 큐에 넣어서 처리하는 방법에 대해.. 용맨소녀 1698 2013/02/05
69101             Re:Re:Re:DB를 큐에 넣어서 처리하는 방법에 대해.. Lyn 1533 2013/02/05
69103                 답변 감사합니다.. 많은 참고 되었어요..(냉무) 용맨소녀 1540 2013/02/05
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.