배경 핵심 데이터 프로세스에서 상당한 양의 블로그를 읽었지만 많은 BG 핵심 데이터 태스크를 한 번에 모두 관리하고이를 다시 알려주는 방법을 가장 잘 이해할 수는 없습니다 정의되지 않은 시간에 메인 스레드 (MOC)에 전송한다.여러 개의 NSManagedObjectContexts - 경쟁 조건 및 교착 상태 방지
난 당신이 내가 멋진 비동기 작업 완료를 얻을 수 [context performBlock
를 사용하여 함께 NSManagedObjectContextDidSaveNotification
에 가입하여 NSThread
그 당 1 NSManagedObjectContext
을 해야하는 알고 있어요.
- BG MOC 1 모르는 내가 비동기 작업을 많이하고 있는데, 말했다
- BG MOC (2) 그것의 작업
- BG MOC이 개 완료 작업 및 알림이 전송 저장
- BG MOC 1 개 완료 작업과 이후 떨어진 잎사귀 BG MOC의 2 초에 출발했다 그것의 작업에 출발했다
내 전반적인 질문은 어떻게 여러 MOC에서 경쟁 조건을 해결할 수 있습니까?
올바른 동작으로 스레드 당 1 MOC가되는 경우 NSThread ivar을 만들고 코어 데이터 작업을 모두 수행 할 수 있습니까? 그렇게하면 자신과 동시에 작동하는 하나의 MOC를 가질 수 있습니까?
NSLock은 여러 스레드에서 동시에 액세스 할 수있는 특정 코드를 피할 수있는 해결책 일 수는 있지만 읽지 못했습니다. 잠금이 필요한 항목을 모르겠습니다. 컨텍스트 저장 방법? 영속 저장소 (다중 스레드를 무의미하게 만드는 것처럼 보입니다)?
마지막으로 내 MOC에 태그를 추가 할 수 있습니까? 그런 식으로 다른 작업이 실행 중임을 알면 데이터를 덮어 쓰지 않도록 인스턴스를 만든 순서대로 알림을 저장하고 처리 할 수 있습니다. 스레드 당
위대한 답변, 많은 감사. 구현시'NSOperation' /'NSOperationQueue'를 사용하지 않았으므로 여기에서 시작하겠습니다. 다행스런 사기극 아이디어를 얻는다면 다행입니다. – Magoo
"NSOperation 또는 이와 유사한 구조입니다.이 구조체 대신 MOC를 생성해야합니다."이 구조체 내부에 있어야합니까? –
감사합니다. @anDundas가 수정되었습니다. –