Предположим, что я хочу сделать этот код потокобезопасным:
- (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];
}
}