2012-01-24 5 views
0

저는 앱의 주요 부분 동안 지속적으로 실행되는 iPhone 4+에서 고정밀 코어 모션 읽기 (가능한 경우 => 100Hz) 및 동작 분석을하고 싶습니다. 모션 응답과 분석 코드가 보내는 신호는 가능한 한 지연이 없어야합니다.CoreMotion 및 정확한 타이밍 목적을위한 NSThread, NSOperation 또는 GCD?

내 원래 계획은 메트로놈 프로젝트의 코드 (여기서는 Accurate timing in iOS)를 기반으로 전용 NSThread를 실행하고 모션 분석기가 스레드를 연결하고 사용하는 프로토콜을 실행하는 것이 었습니다. GCD 또는 NSOperation 대기열이 더 좋을지 궁금합니다.

많은 정보를 읽은 후 내 인상은 규칙적인 간격으로 반복적으로 반복 수행되는 소수의 작업이 아닌 개별적인 일회성 작업을 처리하도록 설계되었으며 매분마다 밀리 초 단위로 사용하는 것이 좋습니다. 부주의로 많은 스레드 생성/파괴 오버 헤드가 발생합니다. 아무도 여기에 어떤 경험이 있습니까?

또한 위의 링크의 코드와 같이 스레드의 끝없는 while 루프의 성능에 대해 궁금합니다. 스레드로 스레드가 작동하는 방식에 대해 더 알고있는 사람 있습니까? iPhone4는 단일 코어 프로세서이며 다양한 타이밍 및 I/O 요구 사항을 기반으로 스레드를 전환하여 병렬 처리의 효과를 생성하는 지능형 멀티 태스킹 (선점 형)을 사용합니다 ...

끊임없이 실행되는 단순한 "while"루프가 있고 매 밀리 초마다 추가 작업을 수행하는 스레드가있는 경우 프로세서의 스위칭 알고리즘은 무한 루프를 리소스에 대한 "높은 요구"로 간주하여 다른 스레드 나 스레드로부터 호깅합니다 추가 코드 실행 사이의 "중단 시간"에 다른 스레드에 대한 리소스를 더 많이 할당 할만큼 똑똑 할만큼 똑똑합니까? 도움말 및 전문 지식에 미리

덕분에 ...

답변

0

IMO 병목 오히려 센서입니다. 실제 업데이트 빈도는 사용자가 지정한 것과 거의 같지 않습니다. update frequency set for deviceMotionUpdateInterval it's the actual frequency?Actual frequency of device motion updates lower than expected, but scales up with setting

얼마 전에 Core Motion과 원시 센서 데이터를 사용하여 몇 가지 측정을 수행했습니다. Simpson과의 통합을 수행하고 오류를 최소화하기 위해 업데이트 속도가 너무 빨랐습니다. 실제 주파수가 항상 낮고 약 80Hz에서 한계가 있다는 것이 밝혀졌습니다. iOS 4를 실행하는 iPhone 4였습니다. 그러나 대부분의 경우 과학적 목적으로이 기능이 필요하지 않는 한 60-70 Hz는 사용자의 요구에 어울리는 것이어야합니다.

+0

감사합니다. 이러한 링크에는 CoreMotion이 별도의 스레드에서 추가 계산을 수행하여 태도 좌표를 얻는 것과 같은 유용한 정보가있었습니다. 아직도 내가 아는 사람이라면 질문의 일반적인 스레딩 측면에 대해 더 알고 싶습니다 ... –

관련 문제