의도하지 않은 종류의 무한 루프가 대개 CPU 사용량이 높다는 것을 알고 있습니다. 그러나 나는 왜 그런지 이해하지 못한다. 아무도 나에게 설명 할 수 있을까?의도하지 않은 종류의 무한 루프가 CPU 사용을 증가시키는 이유는 무엇입니까?
답변
무한 루프는 실행중인 다른 코드와 다릅니다. 컴퓨터는 무한 루프가 많은 반복을 필요로하는 복잡한 계산이 아니라는 것을 모릅니다.
무한 루프가 OS에 시간을 반환하는 일부 시스템 기능을 호출하는 코드를 포함하지 않는 한 OS는이를 무언가에 적극적으로 참여하는 프로세스로 취급하고 실행 시간을줍니다. 실행중인 다른 프로세스가 없으면 단일 코어 시스템에서 CPU의 100 %를 소모합니다.
CPU는 루프를 실행하는 동안 다른 작업을 수행 할 수 없습니다 (끝나지 않음). 선제 멀티 태스킹 시스템을 사용하더라도 (무한 루프가 자신의 프로세스 나 스레드를 영원히 막을 수 있도록), 루프는 OS의 선점 스케줄러가 그것을 넘겨 줄 때마다 타임 슬라이스를 "먹습니다". 다음 조각을위한 CPU - 아무 것도하지 않고 매번 한 조각의 CPU 시간을 소비하므로 많은 CPU가 다른 모든 스레드에 유실됩니다. 다른 유용한 작업을 수행 할 수 있습니다.
이 답변은 정확할 수도 있지만 너무 어려워서 이런 종류의 질문을하는 사람들에게별로 도움이되지 않습니다. 기술 용어를 광범위하게 사용하는 것 외에도, 단락의 대부분인 두 번째 문장은 특히 구문 분석하기에는 너무 길다. – sawa
무한 루프 자체는 전혀 문제가되지 않습니다. 사용자와 상호 작용하는 대부분의 응용 프로그램은 무한 루프입니다. 그들은 반복적으로 사용자를 기다리고 그에 따라 행동하고주기를 다시 수행합니다. 운영 체제 자체는 무한 루프입니다. 이러한 종류의 무한 루프는 무언가를 반복하면서도 사용자에게 유용한 것을 주기적으로 출력하기 때문에 '생산적'이라고합니다.
저는 비생산적 인 무한 루프가 걱정됩니다. 그러나 이것이 왜 문제인지는 분명합니다. 그들은 장점들 중 하나도없이 생산적인 루프 (전력 소비, CPU 시간 사용 등)의 단점을 모두 가지고 있습니다. 그들은 아무런 도움이되지 않습니다.
첫 번째 단락은 유익하고 도움이되지만 두 번째 단락은 원형입니다. 문제는 의도하지 않은 종류의 무한 루프가 "전력을 소비하고 CPU 시간을 사용하는 것"입니다. – sawa
당신은 아마 사실에 Halt and Catch Fire instruction
- 1. 무한 루프가 무한 루프입니까?
- 2. 왜 무한 루프가 되는가
- 3. 무한 루프가 ensime
- 4. Google App Engine에서 무한 루프가 발생합니까?
- 5. 컴파일 타임에 무한 루프가 발생합니까?
- 6. CPU 및 램 사용을 줄이는 방법은 무엇입니까?
- 7. FFMpeg CPU 사용을 어떻게 제한합니까?
- 8. 의도하지 않은 사람의 실수를 막는 방법?
- 9. Bison/Yacc 문법의 의도하지 않은 연결
- 10. jquery/jqtouch getJSON을 호출하면 무한 루프가 발생합니까?
- 11. 왜이 자바 스크립트 코드에는 무한 루프가 있습니까?
- 12. Jquery help needed- 무한 루프가 필요하십니까?
- 13. 키보드 입력에서 무한 루프가 멈추는 동안 - C
- 14. 스캐너를 사용할 때 무한 루프가 발생합니까?
- 15. RewriteRule 결과 무한 리디렉션 루프가 발생합니다.
- 16. 않습니다 IQueryable.Expression = Expression.Constant (this); 무한 루프가 발생합니까?
- 17. Pyparsing : 욕심이 없도록 시도하면 무한 루프가 발생합니다.
- 18. dependentObservable을 사용하여 데이터를로드하면 무한 루프가 발생합니다.
- 19. 생성자가 기본적으로 명시 적이지 않은 이유는 무엇입니까?
- 20. Mix_Chunk를 재생할 때 의도하지 않은 지연이 있습니다.
- 21. 리베이스 중에 의도하지 않은 스킵에서 복구
- 22. IE - 의도하지 않은 Divs 사이의 수직 공간
- 23. "의도하지 않은 참조 비교"오류의 해결 방법은 무엇입니까?
- 24. C#에서 CPU 사용을 제한하는 방법
- 25. TCP 서버가 MAX CPU 사용을 유발합니다.
- 26. ezpdf PHP는 100 % cpu 사용을 사용합니다
- 27. Windows .NET 서비스의 CPU 사용을 제한
- 28. C#이 루프가 너무 느린 이유는 무엇입니까?
- 29. jQuery - 루프가 두 번 실행되는 이유는 무엇입니까?
- 30. 스레드에서이 Java 루프가 작동하지 않는 이유는 무엇입니까?
언급하는 현대 범용 O/S, 그것은 필요 때까지 스레드에서 아무것도 실행에서 커널을 중지 될 interruptable 대기 상태가됩니다 제정신 코드입니다. –
동의하지만, 필자의 연구는 학술 연구를 위해 만들어진 것 같은 강렬한 계산과 비교되었다. – NilObject