Reputation: 1873
Are there interlocked(atomic) operations in iOS SDK?
I need interlocked increment\decrement and interlocked comparsion.
*UPDATE: * My main problem is waiting for few NSThreads created by main thread(main thread mustn't work while other threads work).
I don't know how to do it.
Upvotes: 12
Views: 8776
Reputation: 104698
Update: Language level atomics under C11 and C++11 are now available.
You can simply declare _Atomic(int) a;
.
atomic operations and their documentation can be found in libkern/OSAtomic.h
. an overview can be found under man atomic
.
as well, you will likely find C11 and C++11 language/library support very soon.
Upvotes: 2
Reputation: 98974
You can use the OSAtomicIncrement*
/OSAtomicDecrement*
operations described in Using Atomic Operations.
Upvotes: 16
Reputation: 35384
Objective-C has the keyword synchronized for atomic operations.
@synchronized(object) {
// ...
}
If you specify the attribute atomic in a property declaration, the setters and getters will be sythesized using these synchronized-blocks.
Also look at NSLock
and NSLocking
protocol.
Upvotes: -1
Reputation: 8583
You can take a look at the properties (ObjectiveC 2.0 feature).
@property int atomicProperty;
There is in fact no 'atomic' specifier, as properties default to atomic. They can be set to 'nonatomic'.
You may be interested by @synchronized
also. Or this part of the doc:
Upvotes: -2