Mindestens seit iOS 9 ist NSPrivateQueueConcurrencyType der einzige nicht veraltete Thread-Concurrency-Typ für Core Data-Vorgänge, die nicht im Hauptthread ausgeführt werden. Mein Problem ist jetzt, dass ich die Thread-Priorität für das, wie dies ändern will:Festlegen der CoreData NSManagedObjectContext-Threadpriorität
...:(int) neededPriority {
_queue = dispatch_queue_create("Worker", DISPATCH_QUEUE_SERIAL);
dispatch_set_target_queue(_queue,
dispatch_get_global_queue(neededPriority, 0));
Manchmal brauche ich eine hohe Priorität, manchmal gering. Aber wenn ich [_privateContext performBlock:...]
rufe, kann ich keinen Parameter mit der benötigten Priorität übergeben, noch hat der Kontext irgendeine Eigenschaft, um seine Thread-Priorität festzulegen.
Daher meine Frage: Gibt es eine Möglichkeit, die Kontextwarteschlange in eine bestimmte Thread-Priorität zu setzen?
Wenn Sie 'performBlockAndWait:' während des Hauptthreads verwenden, führt die Warteschlange den Block im Hauptthread aus. Also würden alle 'NSThread'-Aufrufe auf den Hauptthread angewendet werden. –
Danke, ein kurzer Test mit 'NSLog (@" Alte Thread-Priorität:% f ", [NSThread threadPriority]); if (! [NSThread setThreadPriority: 0.1]) { NSLog (@ "Konnte die Priorität nicht setzen!"); } else { NSLog (@ "Neue Threadpriorität:% f", [NSThread threadPriority]); } zeigte, dass es zu funktionieren scheint. – Jan