Siarhei Fedartsou
Siarhei Fedartsou

Reputation: 1873

Interlocked operations in iOS?

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

Answers (4)

justin
justin

Reputation: 104698

Update: Language level atomics under C11 and C++11 are now available.

You can simply declare _Atomic(int) a;.

A more detailed introduction.


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

Georg Fritzsche
Georg Fritzsche

Reputation: 98974

You can use the OSAtomicIncrement*/OSAtomicDecrement* operations described in Using Atomic Operations.

Upvotes: 16

Felix
Felix

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

jv42
jv42

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'.

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

You may be interested by @synchronized also. Or this part of the doc:

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

Upvotes: -2

Related Questions