GCD dispatch Semaphore(信号量)
dispatch_semaphore_create 创建一个semaphore 函数有一个整形的参数,我们可以理解为信号的总量
dispatch_semaphore_signal 发送一个信号 自然会让信号总量加1
dispatch_semaphore_wait 等待信号 当信号总量为0的时候会等待 大于等于1时会返回并对信号总量减1
例: NSUrlsession 同步请求
dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
NSURLSession* session=[NSURLSession sharedSession];
NSURLSessionDownloadTask* task=[session downloadTaskWithURL:ZipURL completionHandler:^(NSURL * _Nullable location, NSURLResponse * _Nullable response, NSError * _Nullable error) {
dispatch_semaphore_signal(semaphore);
}];
dispatch_semaphore_wait(semaphore,DISPATCH_TIME_FOREVER);