멀티쓰레드로 한 소켓에 대해서 Write 하는 경우에 대해 질문 드립니다..
글쓴이: zzang3757 / 작성시간: 금, 2013/07/26 - 1:39오전
음,, 갑자기 궁금한게 생겨 한가지 테스트를 해보고있습니다.
서버는 연결된 클라 1명에게 3개의 쓰레드로 "aaaa~~" "bbbb~~" "cccc~~" 이렇게 각각 300바이트씩 500번 Write를 하게 하였습니다.
클라의 수신버퍼 크기는 300바이트로 셋팅하였습니다 ~
클라에서는 300바이트씩 Read 하여 파일에 출력하도록 하였습니다. 물론 클라는 멀티쓰레드로 Read하는것이 아니라 싱글쓰레드입니다.
서버의 Write만 3개의 쓰레드로 하는것입니다..
근데 파일에 찍힌 결과를 보면..
aaaaaaaaaaaaaaaaaaaa ~
bbbbbbbbbbbbbbbbbbbb ~
aaaaaaaaaaaaaaaaaaaa ~
이렇게 300개씩 잘 찍히다가 어느순간 보면
aaaaaaaaaabbbbbbb 이런식으로 패킷이 겹치는 순간이 있는 것 같습니다.
이게 진짜 패킷이 겹치는 것인지,, 이런경우엔 어떻게 처리해야하는건지 궁금합니다..
조언 부탁드립니다.
감사합니다.
Forums:
특정 쓰레드가 cpu에 할당되어 해당 쓰레드가
특정 쓰레드가 cpu에 할당되어 해당 쓰레드가 300바이트의 문자를 모두 write하기 전에 context switching이 발생하여 다른 쓰레드가 cpu에 할당될 경우 위와 같이 패킷이 겹치게 되구요~
이를 방지하기 위해 쓰레드간 동기화 메카니즘이 필요하게 됩니다.
동기화 방식은 멀티쓰레드 프로그래밍관련 자료를 찾아보시면 많이 나올거에요~~
댓글 달기