dispatch_semaphore_wait信号后没有响应

时间:2016-06-21 10:58:02

标签: objective-c cocoa grand-central-dispatch semaphore

sem = dispatch_semaphore_create(0);

// called by NSOperationQueue
-(void)waitFromUI
{
    NSLog(@"%@", [NSThread currentThread]);  //<NSThread: 0x60000007d7c0>{number = 3, name = (null)}
    NSLog(@"%ld",dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER));
}

// called by UI Button click
-(void)responseFromUI:(BOOL)response
{
    NSLog(@"%@", [NSThread currentThread]); //<NSThread: 0x600000060840>{number = 1, name = main}
    dispatch_semaphore_signal(sem);
}

请参阅代码,工作流程在NSOperation块中首先waitFromUI,然后在此块中按performSelectorOnMainThread显示用户界面,然后点击此用户界面中的按钮以调用responseFromUI

函数dispatch_semaphore_wait在我调用dispatch_semaphore_signal后没有结束,它会永远等待并阻塞我的主线程。  任何人都知道我的代码是什么问题。

0 个答案:

没有答案