_getch() 함수는 사용자가 키보드에서 타이핑 키를 누를 때까지 반환되지 않습니다. 이 함수가 프로그램의 주 스레드에서 호출되면 UI 스레드가 멈추게됩니다. 메시지 루프를 가동시키지 않아 UI가 더 이상 입력 이벤트를 처리하지 않거나 윈도우를 칠하지 않을 때 UI가 멈 춥니 다. 몇 초 후에 Windows는 제목 표시 줄에 "응답 없음"으로 유령 창을 둡니다.
백그라운드 스레드에서 _getch()를 호출하면 문제가 해결되지만 이는별로 도움이되지 않습니다. _kbhit()을 사용하여 키 스트로크를 사용할 수 있는지 확인할 수 있습니다. _kbhit()이 true를 반환 한 후에 _getch()를 호출하면 차단되지 않습니다. 아마 어느 쪽도 편리하지 않을 것입니다. _kbhit()가 false를 반환하는 동안 메시지 루프를 펌핑하려고하면 기술적 인 해결책이됩니다. 메시지 루프가 잘못된 코드에 저장되어 있지 않은 경우입니다.
콘솔 창에 Ctrl + S를 입력하면 출력이 일시 중지되고 Ctrl + Q를 누르면 다시 시작됩니다. UI 스레드는 여전히 차단되지만 최소한 사용자는 의도적으로 UI 스레드를 차단합니다.
한스 패 탄트 (Hans Passant)의 훌륭한 정보 조각, 친절하게 답장을 보내 주셔서 감사합니다 :) – SnoopFroggyFrog