【发布时间】:2015-01-21 20:00:14
【问题描述】:
我正在尝试执行 3 个异步请求并使用信号量控制负载以了解何时全部加载。
我以这种方式初始化信号量:
let sem = dispatch_semaphore_create(2);
然后将等待信号量代码发送到后台:
let backgroundQueue = dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0)
dispatch_async(backgroundQueue) { [unowned self] () -> Void in
println("Waiting for filters load")
dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER);
println("Loaded")
}
然后我发出 3 次信号(在每个请求 onSuccess 和 onFailure):
dispatch_semaphore_signal(sem)
但是当信号码到达时它已经通过了信号量等待码,它从不等待减去信号量计数。
为什么?
【问题讨论】: