Подтвердить что ты не робот

Блокированные операции в iOS?

Существуют ли блокированные (атомные) операции в SDK для iOS?

Мне нужно сблокировать инкремент\декремент и блокировку.

* UPDATE: * Моя основная проблема заключается в том, что несколько NSThread создаются основным потоком (основной поток не должен работать, пока работают другие потоки).

Я не знаю, как это сделать.

4b9b3361

Ответ 2

Обновление: Теперь доступны уровни атомарности уровня под C11 и С++ 11.

Вы можете просто объявить _Atomic(int) a;.

Более подробное введение.


а их документация может быть найдена в libkern/OSAtomic.h. обзор можно найти в разделе man atomic.

вы, скорее всего, скоро найдете поддержку языка и библиотеки C11 и С++ 11.

Ответ 3

Objective-C имеет ключевое слово, синхронизированное для атомных операций.

@synchronized(object) {
    // ...
}

Если вы укажете атрибут atomic в объявлении свойства, сеттеры и геттеры будут просканированы с использованием этих синхронизированных блоков.

Также смотрите протокол NSLock и NSLocking.

Ответ 4

Вы можете взглянуть на свойства (функция ObjectiveC 2.0).

@property int atomicProperty;

На самом деле нет "атомарного" спецификатора, поскольку свойства по умолчанию являются атомарными. Они могут быть установлены на "неатомические".

http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/ObjectiveC/Articles/ocProperties.html

Вас может заинтересовать также @synchronized. Или эта часть документа:

http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Multithreading/ThreadSafety/ThreadSafety.html