pthread_mutex_t的使用
#include <pthread.h>
- (void)viewDidLoad {
[super viewDidLoad];
TestObj *obj = [[TestObj alloc] init];
__block pthread_mutex_t mutex;
pthread_mutex_init(&mutex, NULL);
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
pthread_mutex_lock(&mutex);
[obj method1];
sleep(2);
pthread_mutex_unlock(&mutex);
});
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
pthread_mutex_lock(&mutex);
[obj method2];
pthread_mutex_unlock(&mutex);
});
}
假想它是我们的一个共享资源,method1与method2是互斥的
@implementation TestObj
- (void)method1 {
NSLog(@"%@",NSStringFromSelector(_cmd));
}
- (void)method2 {
NSLog(@"%@",NSStringFromSelector(_cmd));
}
@end
2016-11-06 15:39:24.258 SSS[20081:865304] method1
2016-11-06 15:39:26.258 SSS[20081:865303] method2