2011-01-23 7 views
2

주기적으로 특정 작업을 수행해야하며 현재 nanosleep을 사용하고 있습니다.C++ :보다 정확한 타이밍 간격

작업을 매 초 또는 매 10 초마다 실행해야합니다. 지정된 타임 아웃 작업을 할 것입니다 스레드를 만들 수

while(true) 
{ 
doTask(); 
sleep(); 
} 

월터 옵션의

+2

C++과 아무 관련이 없습니다. OS에 따라 다릅니다. 'sleep'의 정밀도가 충분하지 않습니까? – ruslik

+0

가능한 복제본 [C++ 교차 플랫폼 고해상도 타이머] (http://stackoverflow.com/questions/1487695/c-cross-platform-high-resolution-timer) –

+0

내 응용 프로그램이 그리 안정적이지 않습니다. 로그 파일에서 무슨 일이 벌어지는지는 알지 못하지만 기본적으로 10 초마다 파일을 저장해야합니다. 나는 그것이 몇 시간 동안 작동하게하고 저장해야 할 파일들을 건너 뛴 것을 보았다. 무슨 일이 일어나는지 어떻게 알 수 있습니까? – Walter

답변

1

하나 :

은보다이 할 수있는 더 좋은 방법이있다.

+0

자고있는 것보다 더 좋은 방법입니까? 그들은 같은 결의를 가져야하지 않습니까? – Walter

0

스레드 라이브러리를 사용하여 doTask()를 처리하는 스레드를 만들 수 있습니다. 주 스레드는 잠자는 것을 계속하고 1 초 또는 10 초마다 실행됩니다.

이 작업은 QTimer와 QRunnable을 사용하여 수행 할 수 있습니다.

http://doc.qt.nokia.com/latest/qtimer.html

도크에 따르면, 해상도는 주위 대부분의 경우 1 밀리. 귀하의 필요에 따라 충분해야합니다.