Welche Vorteile hat dispatch_sync gegenüber @synchronized?

Nehmen wir an, ich möchte diesen Code threadsicher machen:

- (void) addThing:(id)thing { // Can be called from different threads
    [_myArray addObject:thing];
}

GCD scheint der bevorzugte Weg zu sein, um dies zu erreichen:

- (void) addThing:(id)thing { 
    dispatch_sync(_myQueue, ^{  // _myQueue is serial.
        [_myArray addObject:thing];
    });    
}

Welchen Vorteil hat es gegenüber der herkömmlichen Methode?

- (void) addThing:(id)thing {
    @synchronized(_myArray) {
        [_myArray addObject:thing];
    }
}

Antworten auf die Frage(4)

Ihre Antwort auf die Frage