2014-11-02 4 views
1

동시에 두 개의 스레드 (NSOperations)를 처리 할 수있는 패턴을 찾고 있으며 두 가지 모두 완료되면 리턴합니다. 이 작업을 복잡하게하기 위해 이러한 이중 작업 대기열이 필요합니다.2 개의 NSOperation 객체의 집합

내 생각에는 NSOperationQueue를 모두 포함하는 NSOperation이 있어야했습니다. 그런 다음 NSOperation 큐는 동시에 둘을 수행하고 대기열이 비어있을 때 알려 주며 진행할 수 있습니다.

이 문제를 해결하거나 더 나은 방법으로 이러한 작업/위의 함정을 찾으십시오.

미리 감사드립니다.

답변

1

이 다루는 NSOperation의 의존성 지원을 사용할 수 있습니다. 기본적으로 당신은 당신이 처음이 작업이 완료되면 실행하려는 코드를 실행하는 3 동작을 만든 다음 큐에 3 동작에 의존로 처음 두 작업을 추가하고 모두 추가 :

NSOperation *op1 = [NSBlockOperation blockOperationWithBlock:^{ 
    NSLog(@"op1!"); 
}]; 

NSOperation *op2 = [NSBlockOperation blockOperationWithBlock:^{ 
    NSLog(@"op2!"); 
}]; 

NSOperation *completionOp = [NSBlockOperation blockOperationWithBlock:^{ 
    NSLog(@"op1 and op2 are complete!"); 
}]; 

[completionOp addDependency:op1]; 
[completionOp addDependency:op2]; 

NSOperationQueue *queue = [[NSOperationQueue alloc] init]; 
[queue addOperation:completionOp]; 
[queue addOperation:op1]; 
[queue addOperation:op2]; 

출력한다 : 비록 completionBlock 먼저 큐에 추가되고,

op1! 
op2! 
op1 and op2 are complete! 

주, 그것은 그것 때문에 op1op2에있는 종속의 마지막 실행합니다.

+0

정확히 내가 무엇을 찾고 있었는지 !!!! –

관련 문제