thread 사용 질문입니다.
글쓴이: sore / 작성시간: 수, 2003/12/10 - 12:32오후
void threadA ()
{
lock()
a->draw();
unlock();
printf ( currentTime ); - <time check 1>
}
int main ()
{
while (1) {
funcB();
pthread_join( threadA );
printf( currentTime ); - <time check 2>
pthread_create( threadA );
}
}
다음과 같은 구조로 화면에 그림이 뿌려지고 있습니다.
그런데. threadA() 의 a->draw() 에서 어떤 계산식을 갖느냐에 따라
<time check 1> 과 <time check 2> 의 값이 현저히 차이가 나더군요..
원래 계산식대로 하면 약 0~2 millisec 정도 차이가 나는데
draw() 함수 부분을 수정했더니 0~ 140 millisec 정도의 차이가 나네요..
<time check 1> 부분을 수행 한 후에 바로 <time check 2> 로 가는 것이 아닌가요?
위의 구조에서 어떻게 저런 현상이 나타날 수 있는지...
main 에서 무한루프 돌린 것이 작용을 한 것인지.
어떤 식의 체크를 더 해보아야 할지 알고 싶습니다..
Forums:
Kernel 레벨 thread라면, threadA 가 종료한 후에 m
Kernel 레벨 thread라면, threadA 가 종료한 후에
main thread가 schedule되어야 수행됩니다.
아마 threadA에서 main thread가 schedule되는 사이에
다른 process나 thread가 수행된것이 아닐까요?
User 레벨 thread라면, draw함수에서 time slice를 다 사용해서
중간에 한번 task switch가 발생해서 차이가 큰게 아닐까요?
@모두 추측이네요-_-;;;;
@UX... Vnn~
댓글 달기