QnA test case : alarm_priority관련 질문
2017.11.23 21:42
스크린샷 첨부합니다.
alarm_priroity 테스트를 해보니 thread 이름이 전부 priority로만 들어가길래(스샷 첨부) 테스트 코드를 체크해보니,
snprintf (name, sizeof name, "priority %d", priority);
thread_create (name, priority, alarm_priority_thread, NULL);
와 같이 thread name을 priority 30, priority 29...로 설정합니다.
근데, usr prog 과제를 하면서 저희가 thread name을 띄어쓰기 간격으로 분리하여 argument passing을 구현한 바 있습니다.
따라서 thread name을 해당 보기와 같이 띄어쓰기를 추가하여 받으면, 뒷부분(숫자)을 argument로 파악하는 것 같습니다.
이건 thread 과제와 usesr prog과제가 뒤바뀌면서 생긴 문제인 듯합니다.
실제로 코드를 아래와 같이 수정하였더니, test case와 같은 순서대로 프린트가 되는 걸 확인했습니다.(스샷첨부)
snprintf (name, sizeof name, "priority_%d", priority);
thread_create (name, priority, alarm_priority_thread, NULL);
제 생각에는 user prog를 먼저함에 따라 예제가 약간 수정되어야 하지 않을까 하는 생각이 듭니다.
혹시 제가 잘못 생각한 부분이 있거나 다른 방안이 있다면 답변 부탁드립니다.
cf) priority-sema에서도 유사한 문제가 발생합니다.(스샷첨부)
해당 문제는 구현의 차이라고 생각됩니다. test 코드에서 thread_create (name, priority, alarm_priority_thread, NULL);와 같이 작성한 이유는 이름과 같은 priority를 가진 thread을 생성하기 위함입니다. 본 학생의 구현 방식은 정확히 파악이 어렵지만 thread_create 부분에서 파싱을 구현하여 위와 같은 문제가 발생한 것 같습니다. 따라서 해당 문제는 구현의 차이에 따라 발생하였지만, thread_create는 해당 이름을 가진 thread를 생성하는 함수이므로 test 코드가 수정될 필요는 없다고 생각되어집니다.