Jakie zalety ma dispatch_sync zsynchronizowane?

Powiedzmy, że chcę uczynić ten kod bezpiecznym dla wątków:

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

GCD wydaje się preferowanym sposobem osiągnięcia tego:

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

Jaką przewagę ma nad tradycyjną metodą?

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

questionAnswers(4)

yourAnswerToTheQuestion