나는 객관적으로 다소 새로운 것 같습니다. 따라서 질문이나 코드가 이상하게 보일 경우 그 이유를 설명 할 수 있습니다. 나는 0.033 초마다 해고되는 NSTimer를 가지고있다.NSTimer - 논 블로킹 콜백
timer = [NSTimer scheduledTimerWithTimeInterval:interval target:self selector:@selector(timerCallback) userInfo:nil repeats:YES];
선택기 기능은 다음과 같습니다
BOOL running = false;
- (void) timerCallback
{
if (running) {
return;
}
running = true;
//Do some stuff
running = false;
}
것입니다, 기능 timerCallback 상관없이 동기화를 유지하기 위해 무엇을이 간격으로 해고되어야한다. (세부 사항으로 건너 뛰는)
but ... 그것이 나왔던 것에 따라, timerCallback 기능은 NSTimer를 멈추게하고, 그것이 재개하기 전에 완료 할 것을 기다리게한다?
간격을 유지하려면 어떤 옵션이 필요합니까? timerCallback 함수가 별도의 스레드에서 실행될 수 있습니까? NSTimer보다 더 나은 옵션이 있습니까? 아마도 별도의 스레드로 시작할 것인가?
타이머가 반복해서 호출되지 않는다는 의미입니까? –
타이머 간격 내에서 'timerCallback' 작업을 수행 할 수 없다면 궁극적으로 문제가 발생할 "작업"백 로그를 생성하지 않습니까? – trojanfoe
아니요. 즉, timerCallback에 0.1 초가 필요하면 NSTimer가 중지되고 함수가 완료 될 때까지 기다린 다음 다시 시작합니다. 결과적으로, 나는 느슨한 동기화. 항상 0.033 초 간격을 유지해야합니다. – GuruMeditation