티스토리 뷰
728x90
CPU 점유율 제어와 Sleep()
함수 사용
1. 과도한 반복문에는 Sleep()
을 사용하자
무한 반복문이나 자원을 많이 소모하는 루프에서는 Sleep()
을 적절히 사용하여 CPU 자원의 독점을 방지해야 합니다. 그렇지 않으면 CPU를 과도하게 점유하게 되어 프로그램이 느려지거나 UI가 응답하지 않게 될 수 있습니다.
2. Windows 프로그램의 멀티 스레드 환경
Windows 환경에서 UI 스레드와 기능을 처리하는 다른 스레드는 자원을 공유하게 됩니다. 이때 특정 스레드가 CPU를 과도하게 사용하면 UI 스레드가 응답하지 않거나 프로그램이 멈출 수 있습니다. 예를 들어, 무한 반복문이 있는 코드에서 CPU 100% 점유가 발생할 수 있습니다.
3. CPU 100% 점유 코드 예시
#include "stdafx.h"
#include
#include
int main()
{
unsigned int i = 0;
while (true)
{
i++;
if (i == 10000000)
{
i = 0;
}
}
return 0;
}
위의 코드는 무한 반복문에서 변수를 증가시키는 동작을 계속 반복하여 CPU를 100% 사용하게 됩니다. 이 상태에서는 다른 스레드가 자원을 사용할 수 없게 되어 프로그램이 멈추거나 응답이 느려질 수 있습니다.
4. Sleep()
을 이용한 해결 방법
Sleep()
함수는 현재 스레드를 잠시 멈추게 하여 CPU 자원을 다른 스레드에 할당할 수 있도록 합니다. Sleep()
을 사용하면 스레드가 잠시 쉬면서 CPU가 다른 작업을 처리할 수 있게 됩니다.
#include "stdafx.h"
#include
#include
int main()
{
unsigned int i = 0;
while (true)
{
i++;
if (i == 10000000)
{
Sleep(3); // 3ms 동안 휴식
i = 0;
}
}
return 0;
}
5. 총평
Sleep()
은 CPU 과다 점유 문제를 간단히 해결할 수 있는 방법입니다.
완벽한 해결책은 아니지만, CPU 자원을 잠시 양보함으로써 다른 스레드가 동작할 수 있도록 해줍니다. 중요한 작업을 할 때는 이벤트 기반 프로그래밍을 고려해야 하며, Sleep()
으로 모든 문제가 해결되지는 않으므로 적절히 사용해야 합니다.
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- C#
- 티스토리챌린지
- Windows
- 성산블루버블
- C#.NET
- 스쿠버 다이빙
- 블루버블다이빙팀
- C++
- DLL
- 외돌개
- C# 고급 기술
- 제주도
- C
- 블루버블
- 네트워크 정보
- Linux
- 서귀포
- 스쿠버다이빙
- 현포다이브
- 서귀포블루버블
- 암호화
- 울릉도
- PowerShell
- CMake
- 패턴
- Build
- script
- 오블완
- OpenSource
- 블루버블다이브팀
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함
250x250