[英]dispatch_semaphore_wait not response after signal
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
显示UI,然后单击此UI中的按钮以调用responseFromUI
。
函数dispatch_semaphore_wait
在调用dispatch_semaphore_signal
后没有结束,它会永远等待并阻塞我的主线程。 有人知道我的代码有什么问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.