단일 스레드 콘솔 응용 프로그램에서 사람들은 종종 Thread.Sleep
을 잠시 동안 응용 프로그램을 일시 중지하는 게으른 방법으로 사용합니다.수면 차단 프로그램이 종료합니까? 어떻게 구현됩니까?
이 질문은이 방법을 사용하지에 대한 흥미로운 점을 제기 : Why is Thread.Sleep so harmful
그러나 다른 수면 블록을 현재 스레드를 아는 것보다, 나는 그것이 어떻게 작동하는지 이해가 안 돼요 - 인스턴스가 밖으로 최대 CPU 코어의는 않습니다에 대한 꽉 루프 또는 실제로 스레드를 일시 중지합니까?
저에게 더 중요한 것은 잠자기 중에 잡히면 콘솔 앱이 다양한 앱 종료 시나리오 (CTRL-C, 죽이기, 창 닫기 버튼)에 어떻게 반응합니까? 운영 체제가 강제 종료 할 때까지 맹목적으로 실행을 계속할 것인가?
. 확실히, 그것은 일시 중지되었습니다. 콘솔 킬은 OS에 의해 구현되고 프로세스를 종료합니다. 프로세스의 스레드가 어떤 작업을 수행하던간에 관계가 없으면 노르웨이어 앵무새 스타일이 중단됩니다. –
관심있는 분들은 [Thread.Sleep()에 대한 구현]을보실 수 있습니다 (http://referencesource.microsoft.com/#mscorlib/system/threading/thread.cs,5f1072b92dae1dd8). –
감사합니다. @HansPassant 'suspended'는 내가 원하는 용어입니다. Sheeo가 스핀 락으로 이어지는 대신 스레드가 일시 중단되었다고 지적한 것처럼 말입니다. 좋은 MP 참조. –