ios线程阻塞之NSCondition

#define kCinClient_CALLBACK_QUEUE              "CClientCallback"
@interface ViewController (){
    NSCondition* g_Condition1;
    dispatch_queue_t _q;
}
@end

@implementation ViewController
-(void)timerFired{
    dispatch_time_t time = dispatch_time(DISPATCH_TIME_NOW,10 * NSEC_PER_SEC);
    dispatch_after(time, dispatch_get_global_queue(0, 0), ^{
        NSLog(@"==10秒解锁==");
        [g_Condition1 lock];
        [g_Condition1 signal];
        [g_Condition1 unlock];
    });
}
- (void)viewDidLoad {
    [super viewDidLoad];
    g_Condition1 = [ [NSCondition alloc] init];
     _q = dispatch_queue_create(kCinClient_CALLBACK_QUEUE, nil);
    NSLog(@"==开始==");
    dispatch_async(_q, ^{
        [self timerFired];
    });
    [self test1];
    dispatch_async(_q, ^{
        [self test2];
    });
    // Do any additional setup after loading the view, typically from a nib.
}
-(void)test1{
    [g_Condition1 lock];
    NSLog(@"==进入等待==");
    [g_Condition1 wait];
    NSLog(@"==结束等待==");
    [g_Condition1 unlock];
}
-(void)test2{
    NSLog(@"==结束==");
}


你可能感兴趣的:(IOS)