CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ 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
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.