데이터 모델을 래핑하고 여러 스레드에서 액세스/수정되는 클래스가 있습니다. 데이터 모델 수정이 동기화되었는지 확인해야합니다. 나는 dispatch_queue_create (..., DISPATCH_QUEUE_SERIAL)를 사용하고 있습니다. 이것은 내 요구에 정말 잘 작동하고 있습니다.이전에 대기중인 dispatch_async에 대한 GCD dispatch_sync 우선 순위
내 클래스의 대부분의 메서드는 내부적으로 "dispatch_async (queue,^{...});"를 호출합니다. 스냅 샷 결과를 반환해야하는 곳이 몇 군데 있습니다. 이것은 어떻게 보이는지에 대한 간단한 예입니다.
- (NSArray*) getSomeData {
__block NSArray* result = nil;
dispatch_sync(queue, ^{
... Do Stuff ...
result = blah.blah;
}
return result;
}
이제 "비동기 작업 5 개"가 대기 중이며 현재 하나는 실행 중임을 가정합니다. 이제 "동기화"작업이 예약됩니다. "동기화 작업"은 언제 실행됩니까?
"동기화 작업"은 보류중인 "비동기 작업"보다 먼저 실행됩니다. 이것이 기본적으로 일어나는 일입니까? 그렇지 않다면 우선 순위 대기열에 "동기화 작업"방법이 있습니까? BTW
,
은 내가 전체 큐의 우선 순위를 설정할 수 있습니다 알고 있지만,이 질문에 대해 무엇 없습니다. 나를 위해 대기열 우선 순위 정상입니다. 비동기 작업이 보류되기 전에 동기 작업을 수행하기 만하면됩니다.
응답 해 주셔서 감사합니다. 이것은 좋은 해결책 인 것처럼 보입니다. 나는 그것을 구현하고 어떻게 진행되는지 알려줄 것이다. – Yepher
나는 그것을 구현하고 그것을 많이 테스트하고 정확히 내가 필요로하는 것을 수행한다. – Yepher