CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): zeo (ZeoDtr)
날 짜 (Date): 2005년 11월  8일 화요일 오후 04시 56분 07초
제 목(Title): Re: async vs non-blocking


>예컨대 100바이트를 네트워크로 보내는 io를 요청했을 경우,
>블러킹 io는 100바이트를 다 버퍼에 쓸때까지 기다렸다가 리턴하고, (버퍼가
>모자랄 경우 네트워크에 버퍼 내용이 흘러나가서 버퍼가 빌때까지 기다림)

아닙니다.
한 바이트만이라도 쓸때까지만 기다렸다가 리턴하죠.
(즉, 한 바이트도 못 쓰는 경우에만 기다린다는 것.)
버퍼에 다 쓸때까지 기다린다는 보장은 없습니다.

Windows 계열은 버퍼에 다 쓸때까지 기다리는 모양입니다만(그래서 너무 큰 걸 
쓰면 버퍼 꽉찼다는 오류가...=_=), 그게 공식적인 socket spec은 아니죠. 
읽어들일 때는 당연히 한 바이트만 읽어도 리턴하구요.

수많은 네트워크 프로그래머들이 이걸 잘 인지하지 못해서 간단히 테스트할 
때는 멀쩡하다 정작 릴리즈해서 부하가 올라가면 꼬이는 바람에 막판에 밤을 
새곤 한다는...=_=;

non-blocking과 비동기 io 구별에 대한 건 명확하게 잘 쓰셨군요. 저도 도움이 
된 것 같습니다.+_+



ZZZZZ             "Why are they trying to kill me?"
  zZ  eeee  ooo   "Because they don't know you are already dead."
 zZ   Eeee O  O
ZZZZZ Eeee OOO        - Devil Doll, 'The Girl Who Was...Death'
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.