thread관련질문 계속입니다.
글쓴이: shjoung / 작성시간: 수, 2004/03/03 - 6:33오후
먼저 질문했을때 thread를 하드웨어 제어하기 위해서 사용한다고 했는데...
어제의 문제는 좀 다른 부분이네요.
어제 짰던 프로그램을 아침에 와서 돌려 보니까
심각한 문제가 있는듯 하네요.
프로그램을 간략하게 아래와 같이 정리해 보았습니다.
int working = 0; void drawtoX(void){ window에 그림을 그리는 가상의 함수번 } int draw(void){ if(working) return 0; else { working=1; drawtoX(); working=0; } } int main(void) { int res; pthread_t a_thread; res = pthread_create(&a_thread, NULL, thread_function, NULL); if(res != 0){ perror("Thread creation failed"); exit(EXIT_FAILURE); } while(1) draw(); } void *thread_function(void *arg){ while(1) draw(); }
프로그램 실행시키면 윈도우가 뜨고,
잠시후에 죽으면서 다음과 같은 메세지를 남기네요.
참. 원하는 그림은 잠시 표시
Success
X Error of failed request: BadAccess (attempt to access private resource denied)
Major opcode of failed request: 144 (GLX)
Minor opcode of failed request: 5 (X_GLXMakeCurrent)
Serial number of failed request: 7595
Current serial number in output stream: 7597됩니다.
상황을 좀 더 자세히 알려드려야 겠지만,
잠히는 상황 있으면 도움 주시기 바랍니다.
매번 도움주시는 분들께 감사드립니다.
Forums:
[code:1] if(working) return 0; [
if(working) return 0;
pthread_mutex_lock을 사용하세요. 위 루틴은 working을 체크후 task switching이 발생하면 draw가 동시에 실행 될 가능성이 있습니다.그나저나 백수 언제 탈출하냐... ㅡㅡ; 배고파라.
댓글 달기