[Q] 하나의 소켓에 여러 쓰레드가 동시에 write 한다면?
글쓴이: hohory / 작성시간: 금, 2006/11/10 - 2:07오후
안녕하세요.
udp socket이든, tcp socket이든,
하나의 socket에 data write를
여러 thread에서 동시에 하게 되면,
문제가 생기는지요?
socket에 write할때,
사용하는 함수로는 send/sendto/write 정도가 있을텐데,
이들은 모두 system 함수이므로,
이 함수가 완전히 완료될때까지
다른 thread로 제어권이 넘어가지 않는지...
그렇지 않고, send/sendto/write 함수내에서,
put 함수와 같은 타 함수를 호출하는 로직이 있음으로 인해,
하나의 thread에서 하나의 send/sendto/write 함수가 완료 되기 전에,
다른 thread로 제어권이 넘거가게 되면,
하나의 소켓에 여러 thread가 data를 write할때,
동기화를 해 주지 않으면
문제가 생길것으로 보는데, 궁금합니다.
고수님들의 고견 부탁드립니다.
Forums:
inode 객체 별로
generic_file_write()들어가 보니 파일의 식별자인 inode 객체 별로
semaphore 를 획득/풀기를 이용하여 race condition으로부터
data를 보호하는 군요.
thread간 동일 FD로 write()를 해도 문제없습니다.
/***************************************
Being the one is just like being in love.
***************************************/
send에 요청한
send에 요청한 데이터가 전부 전송되지 않을 수 있기 때문에 문제가 될 것 같습니다.
댓글 달기