ios - 快速3中的dispatch_semaphore_t

标签 ios swift3 semaphore dispatch

我正在objective C中使用以下代码来处理信号量。

-(void)doSome{
    semaphore = dispatch_semaphore_create(0);

    BaseViewController *baseVC = [[BaseViewController alloc]init];
    if(baseVC.isUserObjectExist){
        [self callLoginWebService:baseVC.userObject.username passwordString:baseVC.userObject.password];
    }else{
        dispatch_semaphore_signal(semaphore);
    }

    while (dispatch_semaphore_wait(semaphore, DISPATCH_TIME_NOW)) { //2
        [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:100]];
    }

}



'dispatch_semaphore_t'在Swift中不可用

如何在Swift 3中整合信号量?

最佳答案

您可以通过创建

let semaphore = DispatchSemaphore(value: 0)

Learn official document of Apple

或从其他代码
let url = URL(string: "")
        let semaphore = DispatchSemaphore(value: 0) // 1
        let _ = DownloadPhoto(url: url!) {
            _, error in
            if let error = error {
            }
            semaphore.signal() // 2
        }
        let timeout = DispatchTime.now() + .seconds(5)
        if semaphore.wait(timeout: timeout) == .timedOut { // 3
        }

关于ios - 快速3中的dispatch_semaphore_t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46072462/

相关文章:

ios - 不同的图像名称

multithreading - 用于基于 opencv 的图像处理的基于信号量的同步

c - C中同一共享内存块的不同部分的信号量

ios - 具有相同 segueIdentifer 的多个按钮

ios - 在 UIView 顶部添加减法掩码

ios - Push Segue 后 TabBar 消失

c - 使用信号量来管理更新全局

ios - 将实时视频从 iphone 重新流式传输到服务器

macos - NSSplitviewController 以编程方式

swift3 - 在realm-swift中添加新的realm对象时是否需要迁移?