[ CnUnix ] in KIDS 글 쓴 이(By): jewel (보석같은..@) 날 짜 (Date): 1995년03월12일(일) 22시50분19초 KST 제 목(Title): [A] X에 대하여.. 안녕하세요,, 여러분. X와같이 이벤트 방식에서 종종 당하는 문제입니다. 여러가지 해결책이 있을 수 있습니다. 우선 위에서 setjmp, longjmp 방식은 도스나 유닉스서는 통하지만 X에서는 좀 위험합니다. X에 관련된 여러 함수콜들을 해야하는데 중간에 나와버리면 그상태가 올바른 상태라고 할수 없는경우가 많이 있기때문이죠. 우선 생각해 볼 수 있는것이 오랜시간 자신이 루프를 돌려야 하는부분에서 Timer를 사용하는 것입니다. 물론 이벤트 루프는 계속 돌고 있고요. X에서는 이러한 경우를 위하여 Time out시 원하는 함수로 Callback을 발생시킬 수 있습니다. 이름은 XtAddTimeOut(),, 인자로 들어가는것이 millisecond단위의 시간과 callback 함수명, callback될때 전달될 값 등으로 구성됩니다. 그럼 원하는 시간(아주 짧은)에 계속 제어를 받을 수 있겠죠. 근데 이 함수는 아주 값이 비싼(?) 함수 입니다. 제 경험상 초단위로 이 함수를 사용하면 별 문제가 없었는데, 밀리초 단위로 이 함수를 부르면 시스템 로드가 현격하게 올라갑니다. 이런거 한 3-4개 정도 쓰면 말도 못할 정도입니다. 따라서 대안으로 setitimer를 사용하십시요. 이건 유닉스에 있는 시스템 콜인데, XtAddTimeOut이 이 콜을 이용하여 구현되어 있습니다. setitimer를 사용하는 방법은 유닉스책에 많이 나와 있습니다. 그럼.. jewel |