Mutex Lock mit Objectiv-C

Schreibt mein ein Programm, das mehrere Threads hat und mehrere Threads greifen gleichzeitig lesend und schreibend auf globale Programmdaten zu, so müssen diese Programmdaten vor konkurrierenden gleichzeitigen lesen und schreiben geschützt werden. Diese Aufgaben, innerhalb eines Prozesses übernehmen Mutexe.

Um Mutex (Critical Sections) analog zu pthread_mutex_lock( ) in Cocoa zu realisieren bietet es sich an die Klasse NSLock zu verwenden. Hier ein kleines Code Beispiel:

#import <Cocoa/Cocoa.h>
static NSLock *mutex = nil;

@implementation MySample

(void)myMutexProtectedCall
{
[mutex lock];
...
[mutex unlock]
}

(void)awakeFromNib
{
...
if ( nil == mutex )
mutex = [[NSLock alloc] init];
...
}

@end


Natürlich kann man die Initialisierung von „mutex“ auch in die (id)init und (void)dealloc Methode implementieren.