[완료]소켓 정보 관리
글쓴이: bigbaby / 작성시간: 화, 2010/06/22 - 12:02오전
안녕하세요...
단일 소켓으로 여러 쓰레드가 동시에 read/write를 하고자 합니다.
문제는, 여러 쓰레드에서 동시에 같은 메시지를 read/write를 하기 때문에,
만약 A, B 쓰레드에서 서버로 EEE 라는 메시지를 보냈을 때, 서버에서 EEE의 응답이 왔을 때,
어떤 스레드(A) 에게 응답이 왔다는 것을 알려주는 방법을 잘 모르겠습니다.
물론 각각의 read/write 쌍은 시퀀스 번호로 알 수 있으나 시퀀스 번호에 대응되는 쓰레드 id를 어떻게 얻을 수 있을지 모르겠네요 ㅠㅠ
시퀀스 번호가 작으면 배열로 만들어 쓰레드 id를 저장하면 되나
시퀀스 번호가 int형이라 엄청 커질수도 있습니다.
의견 부탁드립니다.
Forums:
구조가 어떻게 되어
구조가 어떻게 되어 있는지 정보가 없으므로, I/O와 Worker의 분리나 패킷 배달 같은 것은 잘 처리하시고요.
마지막 질문만의 (대부분의) 해결책은 해쉬 테이블입니다.
동일한 fd를 쓰니깐
동일한 fd를 쓰니깐 구분할수 없는거 아닌가요? 주고받는 message에 쓰레드를 구분하기 위한 index를 추가하는건 어떨까요?
답변 감사합니다.
답변 감사합니다.
해쉬 테이블은 c여서 적용하기 힘들더군요 ㅠㅠ
메시지 내에 별도의 필드를 추가하는 방식으로 할것 같습니다.
댓글 달기