异步+信号量与同步队列之间的区别

时间:2015-02-02 12:12:06

标签: ios multithreading

我在想哪一个更好?

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), {
    //long operation
    dispatch_semaphore_signal(sema)
})
dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER)

或没有_

同步
dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), {
    //long operation
})

这两种方法是否以相同的方式工作,还是有区别?

1 个答案:

答案 0 :(得分:1)

在内部,他们也这样做。第一个更灵活,例如你可以发送三个任务,然后是三个等待,它们可以并行执行。第二个是更少的代码。