CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): guest (손님1) <210.118.130.192>
날 짜 (Date): 2002년 3월  7일 목요일 오전 11시 52분 52초
제 목(Title): [q] select와 signal 동기화?


네트웍 서버를 만들고 있습니다.

thread 1

   fd = accept();

   tid = elect_thread();

   pthread_kill(SIGUSR1, tid);



thread a

   sigemptyset(&zero);
   sigemptyset(&new);
   sigaddset(&new, SIGUSR1);
   pthread_sigmask(SIG_BLOCK, &new, NULL);

   while {
   rset = allset;

        pthread_sigmask(SIG_SETMASK, &zero, &save);
        nsel = select(maxfd, &reset, NULL, NULL, NULL);
pthread_sigmask(SIG_SETMASK, &save, NULL);

        if (nsel < 0 ) {
blocbloc...
}
       
bloc...bloc..
   }

여기서 제가 하고 싶은 것은 thread a가 select에서 봉쇄 되어 있을때만 signal를 받고자 합니다.
하지만 현실적으로 pthread_sigmask하고 select사이에 미묘한 시간차로 select 봉쇄전에 
signal이 전달됩니다. 

해결방안이 없을까요? 솔라리스 8입니다. (여기서는 pselect란게 없네요..-_-)

[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.