다중스레드 소켓 처리에 대한 질문입니다.
글쓴이: maze / 작성시간: 목, 2010/09/16 - 10:57오전
accept 하는 스레드가 하나 있고, 그 스레드에서 accept로 받은 fd를
다른 스레드로 넘깁니다. 그 다른 스레드가 처리를 끝내고 해당 fd를
닫게 되는데요.. 이와같이 accept 해주는 스레드가 있고, 그 fd를 close하는
스레드가 따로 동작하고있다면, 어떤 문제가 발생할수 있을런지요..?
fd close 시에 간혹 fail 발생하여서 문의드립니다.
close fail 시의 fd도 출력해보았습니다만.. 정상적인 fd 범위였구요.
답변 부탁드릴게요..
Forums:
문제 없어야
문제 없어야 정상입니다. 쓰레드로 잘 넘겼다면 말이죠.
혹시 accept 한 fd(int)를 그대로 & 붙여서 넘기신게 아닌가 싶네요.
이렇게 할 경우 2개의 클라이언트가 빠르게(쓰레드들이 미처 초기화 되기 전에) accept 된 경우 먼저 들어온 fd는 아무 쓰레드를 할당받지 못하고 두번째 들어온 fd에 쓰레드가 2개 할당되는 일이 생길 수 있습니다. 구현에 따라 그렇게 될 수 있습니다.
이게 아니라면 valgrind로 메모리 침범이 있는지 보셔야 할 것 같습니다
close 시에 fail은 이미
close 시에 fail은 이미 누가 닫았다고 보여지네요.
------식은이 처------
길이 끝나는 저기엔 아무 것도 없어요. 희망이고 나발이고 아무 것도 없어.
댓글 달기