2012-06-03 6 views
0

녀석 iOS에서 내 멀티 스레딩을 설계하는 데 도움이 필요합니다.iOS : 멀티 스레딩을 구성하는 가장 좋은 방법

내 코드에 ARC를 사용하고 있습니다. 나는 다음과 같은 필요 그래서 기본적으로

, 별도의 스레드에서 실행해야합니다 몇 가지 방법을 발사 nstimer 내 메인 스레드에서

는 해당 스레드는 몇 가지 계산을 수행하고 일부 바르에 데이터를두고, 다른 스레드에서 데이터를 읽어야합니다 그 ivar 및 다른 계산을 할, 즉 데이터가없는 경우 두 번째 스레드가있을 때까지 기다려야합니다.

기본적으로 코코아 스레드 (NSThread), GCD 또는 작업 대기열을 사용하는 기술이 내 작업에 가장 적합한 선택이라는 조언을 듣고 싶습니다.

또한 누군가가 두 스레드 간의 상호 차단/동기화 측면에 대한 의사 코드를 제공 할 수 있습니까?

답변

0

GCD/블록 콤보에 가장 적합한 문제 설명을 남겨 놓지 않는 한. 사실 NSTimer를 사용하지도 않을 것입니다 (GCD는 더 나은 대안을 제공합니다 - 예를 들어 GCD 기반 타이머를 생성하는 예를 보려면 dispatch_source_create를보십시오).하지만 그것은 여러분의 요청입니다. 어쨌든, GCD로 ...

- (void)handleTimer:(NSTimer *)timer { 
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{ 
     __block id someObject; 
     // Do work... manipulate someObject in some manner... 
     // When done, invoke other thread... main thread in this case 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      // This code is running in a different thread, and can use someObject directly 
     }); 
    }); 
} 
1

일부 계산은 다른 계산이 끝날 때까지 기다려야한다고 말하기 때문에 NSOperation을보고 다른 작업 (addDependency 사용)에 대한 종속성을 설정해야한다고 말합니다.

관련 문제