무슨 처리를 하는지 정확히 모르겠지만, 대부분의 경우에 스레드 우선 순위를 바꾸지 않아도 되는 경우입니다.
말씀하신 상태는 스레드 내부에 반복 루틴에 스레드 스위칭을 일으키는 Sleep 이나 IO Access가 없어서 발생하게 됩니다. 스레드 스위칭을 일으키는 코드를 넣지 않으면 계속 그 스레드만 처리하게 되어서 다른 스레드에 처리할 CPU 자원이 없어서 컴퓨터가 멈춰 있는 것처럼 보이죠.
Execute 함수를 오버라이딩하여 코딩하실 때, 반복문 안에 Sleep문 하나만 넣으셔도 CPU 풀로드 상태가 해소됩니다.
timeBeginPeriod(1); // 추가, Sleep을 1ms 단위로 실행되도록 하기 위함
while( !Terminated )
{
Sleep(1); // 추가
...
}
timeEndPeriod(1); // 추가
ㅡ_ㅡ;;; 님이 쓰신 글 :
: 다중쓰레드를 이용해서 4개정도의 쓰레드를 지속적으로 돌리는 프로그램인데
:
: 돌리는 쓰레드가 무거운지 다른 윈도우창의 클릭도 안되고 다운과 같은 상태가
:
: 되어버리네요... 그런데 희안하게 디버깅모드에서 진행시키면 윈도우도 정상
:
: 작동하더라고요... c++ 쓰레드를 강제적으로 윈도우즈 동작보다 우선순위를
:
: 낮게 주어서 돌릴수 없을까요? 컴파일은 static, 디버그로 컴파일 했습니다.
:
: 답변부탁드립니다.
|