So bearbeiten Sie ein Array IN PARALLEL

8

Es gibt also mehrere Möglichkeiten, alle Elemente eines Arrays über einen Selektor oder einen Codeblock auszuführen. makeObjectsPerformSelector: und mehr

Wenn Sie 4 oder 16 Kerne zur Hand haben, möchten Sie vielleicht die gesamte Verarbeitung an verschiedene Prozesse senden.

Selbst auf iOS könnte es sinnvoll sein, sie alle wegzuschicken oder sie zumindest fertig zu machen, egal wie der Wind weht.

Was ist der beste und schönste Weg, dies im Kakaomilieu zu tun?

Noch einmal, was ist, wenn Sie sie jederzeit senden möchten, um fertig zu sein, dh warten Sie nicht, bis die Aufzählung abgeschlossen ist, bevor Sie die folgende Anweisung ausführen . ..?

    
Fattie 03.01.2011, 20:56
quelle

2 Antworten

9

Wenn Sie iOS 4+ oder Mac OS X 10.6+ als Ziel haben, verwenden Sie Grand Central Dispatch (und ich verwende eine Kategorie, weil ich finde, dass sie cool sind):

%Vor%

Oder wenn Sie keine Kategorie verwenden möchten ...

%Vor%     
Dave DeLong 03.01.2011, 21:01
quelle
10

Wenn Sie Nebenläufigkeit und synchrones Verhalten wünschen (d. h. warten Sie, bis die Aufzählung abgeschlossen ist, bevor Sie die folgende Anweisung ausführen), wird -[NSArray enumerateObjectsWithOptions:usingBlock:] das tun, wenn Sie die Option NSEnumerationConcurrent übergeben. Diese Methode ist unter Mac OS 10.6+ und iOS 4.0 + verfügbar.

Wenn Sie asynchrones Verhalten wünschen, können Sie eine der Standard-Multithreading-Lösungen wie NSOperation oder GCD kombiniert mit -enumerateObjectsWithOptions:usingBlock: verwenden. Zum Beispiel,

%Vor%     
user557219 03.01.2011 21:22
quelle

Tags und Links