Какие преимущества имеет dispatch_sync по сравнению с @synchronized?
Допустим, я хочу сделать этот код потокобезопасным:
- (void) addThing:(id)thing { // Can be called from different threads
[_myArray addObject:thing];
}
GCD кажется предпочтительным способом достижения этого:
- (void) addThing:(id)thing {
dispatch_sync(_myQueue, ^{ // _myQueue is serial.
[_myArray addObject:thing];
});
}
Какие преимущества он имеет по сравнению с традиционным методом?
- (void) addThing:(id)thing {
@synchronized(_myArray) {
[_myArray addObject:thing];
}
}