|
(인디는 몇년째 접하고 있는데도 머리가 나쁜건지 왜 이렇게 이해가 잘 안되는지..ㅡ.ㅡ)
하나의 접속 세션에 2중 처리하는게 아예 불가능하다는 건가요?
A유저 ----> 서버 ----> B유저
B유저 ----> 서버 ----> B유저
동시간대에 이런식으로 패킷이 가면 B유저에게 2중으로 패킷을 보내는 것이 되는 것이 아닌가하는 저 나름대로의 추측이..;;;
혹시나 WriteBuffer()가 동시에 실행되는거 아닌가? 하는 생각이 들어서요..;;;
걍, 인디 관련 제어시에는 2중 처리는 아예 신경을 꺼도 되는건지요?
그리고, 지금 OnConnect와 OnDisconnect시에 유저정보를 저장하는 변수(패킷 오갈 때 수시로 read, write할 예정) 에 값을 업데이트 하는 부분이 있는데, 이쪽은 크리티컬섹션으로 막아놓고 있습니다..
OnConnect와 OnExecute가 동시에 실행되는 경우가 있는지 긴가민가해서..ㅡ.ㅡ 테스트도 해보고 있는데, 확신이 서질 않네요..
암튼 점점 나락으로 빠져들고 있군요..
(맥스는 막코딩이라서 따라하면 3대가 망합니다..)
Lyn 님이 쓰신 글 :
: 아뇨 걸 필요 없죠..
:
: 두번 처리루틴을 탄다는 것 차제가 말이 안되는...
:
:
: 용맨소녀 님이 쓰신 글 :
: : 테스트를 해보니까요..
: :
: : 메시지 패킷 처리부의 LockList내부에 Sleep(100000); 정도 걸어놓은 다음, 그 LockList에 속해있는 유저가 방만들기 패킷를 보내니까 그건 되더라고요.. (방만들기 후 응답 패킷 송신시에는 LockList 걸지 않음. 크리티컬 섹션이니까 당연한 결과겠죠..)
: :
: : 이러면 결국 서버가 패킷을 전송할 때 하나의 접속 세션에 2중으로 처리가 부과될 수 있겠더라고요..
: :
: : 결국 클라이언트로 패킷을 보낼 때는 한명에게 보내건 여러명에게 보내건 간에 LockList를 걸어야 하는게 맞는건가요?
: :
: :
: : Lyn 님이 쓰신 글 :
: : : LockList 를 호출하면 Critical Section 으로 Enter 하게 됩니다.
: : :
: : : 즉. UnLockList 를 호출하여 CriticalSection 밖으로 나갈 때 까지 다른 유저들은 전부 대기타게 되죠.
: : :
: : : 용맨소녀 님이 쓰신 글 :
: : : : LockList 쓰는 이유가 인증된 접속 세션에게만 작업을 시키기 위함이라 아는데요..
: : : :
: : : : 이런 경우는 어떤가요?
: : : :
: : : : 유저가 서버로 메시지를 보내면 모든 유저에게 메시지를 되돌려주는 구조라고 가정하고요..
: : : :
: : : : 서버에 10명의 유저가 접속해 있고, 10명의 유저가 동시에 메시지를 보내면 서버에서도 동시에 10개의 메시지를 모든 유저에게 날리려고 하는 경우가 생기겠지요..
: : : :
: : : : 이럴 경우 하나의 접속 세션에 메시지 전송 작업이 중복으로 부과될 것 같은데요.. LockList가 이런 상황도 방지하는지요?
: : : :
: : : : 둘 다 동시에 LockList가 걸리면 둘중 하나는 대기 중인 상태에서 나머지 하나가 UnlockList가 될때까지 대기하나요?
: : : :
: : : : 글이 허접이라서 뜻 전달이 될런지 모르겠습니다..ㅡ.ㅡ 답변 부탁드립니다..
|