Я понял, что двойная проверенная блокировка испорчена в java из-за модели памяти, но это обычно связано с одноэлементным рисунком и оптимизацией создания синглтона.Двойная проверка блокировки - объектив c
А что при этом в Objective-C:
У меня есть булева флаг, чтобы определить, является ли мое приложение потоковой передачи данных или нет. У меня есть 3 метода, startStreaming, stopStreaming, streamingDataReceived и я защитить их от нескольких потоков с помощью:
- (void) streamingDataReceived:(StreamingData *)streamingData {
if (self.isStreaming) {
@synchronized(self) {
if (self.isStreaming) {
- (void) stopStreaming {
if (self.isStreaming) {
@synchronized(self) {
if (self.isStreaming) {
- (void) startStreaming:(NSArray *)watchlistInstrumentData {
if (!self.isStreaming) {
@synchronized(self) {
if (!self.isStreaming) {
Это двойная проверка uneccessary? Имеет ли двойная проверка аналогичные проблемы в объекте-c, как в java? Каковы альтернативы этому шаблону (анти-шаблон).
Благодаря
Можете ли вы обосновать этот ответ? –
Вы можете продлить ответ, чтобы добавить предложения для альтернатив. Например, существует ли эквивалент «переходный» или AtomicInteger/etc в Objective-C? –