2017-05-18 12 views
1

'Executing '상태 인 오퍼레이션을 대기열에 넣고'Ready '상태 인 다른 오퍼레이션에 추가 할 수 있는지 궁금합니다.`Executing '상태의 오퍼레이션을 다른 것에 대한 의존성으로 추가하기

작업이 '실행 중'상태이고 B.addDependency(operationA) (B 작업이 대기열에 있고 '준비/대기 중'상태)을 수행하려고합니다. 내 조사에서

것이 가능하지만, 아직 시작되지 않은 대기중인 작업에 종속성을 추가 할 수 있습니다이 경우

+0

'NSOperationQueue'를 왜 사용하고 있는지 물어볼 수 있습니까? 'DispatchQueue'를 사용하면 훨씬 쉬울 것입니다. 그것의 API가 특별히 Swift를 위해 향상되었고 더 널리 사용되고 더 유연합니다. (결국'NSOperationQueue'는 기능이 적은'DispatchQueue'를 감싸는 래퍼 일뿐입니다) – Alexander

+0

예 Im은 OperationQueue를 사용합니다. DispatchQueue가 OperationQueue로 래핑됨을 알고 있습니다. 하지만 호기심에 대해서만 물어 보았습니다. – Robert

+0

@Alexander - 작업 대기열이 작업 대기열보다 훨씬 쉬워졌습니다. (이 질문에 관한) 의존성을 추가 할뿐만 아니라 작업 (특히 비동기식 작업)을 멋진 작업으로 래핑합니다. 동시성의 제약 조건; 디스패치 대기열은 종종 "이동"도구이며, 특히 간단한 작업에는 적합하지만 작업 대기열에 훨씬 적합한 작업이 많이 있다는 것에 동의합니다. – Rob

답변

1

예에 관한 문서를 찾을 수 없습니다.

참고 : 종속성을 추가 할 작업이 아직 시작되지 않았지만 아직 수행 중이라면 의존성이 "has no practical effect" 인 것으로 알고 있습니다. 따라서 가능한 경우 일반적으로 작업을 대기열로 보내기 전에 작업을 시작할 때와 종속성을 추가 할 때의 경쟁 조건을 피하기 위해 종속성을 추가하려고합니다.

+0

다른 제한 사항은 두 작업 간의 종속성을 두 번 이상 추가하지 않아야하며 순환 종속성을 피해야한다는 것입니다. 여기서 A는 B에 종속적이며 B는 A에 종속적입니다. – Rob