Maison > Questions et réponses > le corps du texte
怪我咯2017-04-18 09:24:15
Le contrôle au niveau de la méthode n'a pas de modificateurs au niveau du langage et les blocs de code peuvent être verrouillés.
Il existe de nombreuses façons de verrouiller.
@synchronisé
NSLock
pthread_mutex
dispatch_semaphore
OSSpinLock
@interface A : NSObject {
NSObject _lock;
}
- (void)func {
@synchronized(_lock) {
// do something
}
}
- (void) func {
[_lock lock];
// do something
[_lock unlock];
}
@interface A : NSObject {
pthread_mutex_t lock;
}
- (instance)init {
// 省略
pthread_mutex_init(&_lock, NULL);
}
- (void)func {
pthread_mutex_lock(&lock);
// do something
pthread_mutex_unlock(&lock);
}
@interface A : NSObject {
dispatch_semaphore_t _semaphore;
}
- (instance)init {
// 省略
_semaphore = dispatch_semaphore_create(1);
}
- (void)func {
dispatch_semaphore_wait(_semaphore, DISPATCH_TIME_FOREVER);
// do something
dispatch_semaphore_signal(_semaphore);
}
Étant donné que le verrouillage rotatif n'est plus sûr dans iOS, il ne sera pas présenté ici. Pour plus de détails, vous pouvez lire ce blog
OSSpinLock n'est plus sûr