timeout 상황이 아닌데도 select 의 리턴이 0 이 되는경우

thisnome의 이미지

select 의 리턴값이 timeout 상황이 아닌데도 0 인 경우가 발생합니다.

여러 case 가 있겟지만 제가 겪는 경우는 select 에 입력되는 timeout 값이 특정크기를 넘기는 경우에 다른 event 가 발생하는 경우 리턴 0 이 먼저 발생하고 다시 select 에 진입해서야 해당 event (리턴 1) 이 발생합니다.

while(1)
{
tm.tv_sec = 68719477;
tm.tv_usec = 0;
 
iRet = select(1, &read_set, NULL, NULL, &tm);
iRet 출력;
}

재미있는것은, 제가 시험하는 머신 환경 (SunOS 5.10 sun4u sparc SUNW,Sun-Fire-V245) 에서 대략 68719477 초보다 큰 값을 넣으면 그런 일이 발생하는데, 이 시간이 입력한 시간의 값에 의존적인게 아니라 실제 이벤트가 발생할때의 시간에 의존하더군요.
예를들어 68719477 초보다 3초많은 68719480 초를 세팅하고 3초 전에 select 가 이벤트를 감지하면 iRet = 0, iRet = 1 가 되지만, 3초가 지난후에 이벤트가 발생할때는 iRet = 1 만 떨어집니다.

혹시 이런 현상이 왜 발생하는지 아시는지요? 궁금하네요. ^^

ps. 또다른 SUN 장비 (T5220) 에서도 비슷한 현상이 발생합니다. 수렴하는 시간만 다를뿐이죠 대략 70000000 초를 넘는 근처더군요

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.