for(int i=0; i<NUM_OF_STACKER; i++) { 1.
AddPrintf("TT_Free : Stacker %d 체크 테스트" , 1);
2. AddPrintf("TT_Free : Stacker %d 체크 " ,
i+1);
// ....
}
제가 장비 소프트웨어를 만드는 소스에 위와 같은 루틴이 들어있습니다.
쓰레드로 돌리고 있는중 쓰레드가 갑자기 죽어 버려서 원인을 찾다 보니 위의 코드 차이로 정지해 버린다는것을 알게 되었는데요.
신기해서 함 올려봅니다.
<현상 1>
1번처럼 i를 참조하지 않고 돌리면 for loop에서 쓰레드가 정지 해 버립니다.
2번처럼 i+1로 해서 돌리면 죽지 않고 잘 동작합니다.
1,2번 둘다 빼면 쓰레드는 정지합니다.
<현상 2>
씨빌더5.0에서는 문제 없었는데..
씨빌더6.0으로 다시 컴파일하고 부터 위와 같은 문제가 발생합니다.
빌더6.0 업데이트 설치하고 다시 컴파일 해도 마찬가지 입니다.
별루 기대는 안하지만..
왜 그럴까 함 생각들 해보시길.. ^^
|